Questa domanda riguarda l'applicazione delle regole della mia applicazione che mi confondono.
Il mio controller sta utilizzando il servizio e il servizio sta utilizzando il repository.
public class CommentController: ApiController{
[HttpPost]
public bool EditComment(Comment comment){
commentService.Update(comment);
}
}
public class CommentService{
ICommentRepository repository;
....
....
public void Update(Comment comment){
repository.Update(comment);
}
}
Se l'utente è autenticato, può aggiornare un commento.
-
Ma un utente dovrebbe modificare i propri commenti.
-
Ma un amministratore può modificare tutti i commenti.
-
Ma il commento non può essere modificato dopo una data specificata.
-
Modifica da un dipartimento
E ho qualcosa di simile a queste regole.
Se applico la regola "user editing own comment" nel livello di servizio, cambierò methot di aggiornamento e passeremo il parametro del controller User.Identity.Name,
public class CommentService{
ICommentRepository repository;
....
....
public void Update(string updatedByThisUser, Comment comment){
// if updatedByThisUser is owner of comment
repository.Update(comment);
}
}
Ma, è vero cambiare le operazioni di servizio in base alla regola?
Sono confuso un po 'su dove posso applicare le regole. In controller o in servizio o nel repository.
Esiste un modo standard per farlo come i modelli di progettazione.