Controller / Servizio - Se un servizio salva le modifiche al database

2

Ho un'azione sul mio controller chiamata DeleteLine . Ciò rimuove una riga dal carrello degli utenti.

L'azione del mio controller è simile a questa:

[HttpGet]
public ActionResult DeleteLine(int orderId, int lineId)
{
    var orderResult = _salesOrderService.DeleteLine(_workerContext.CurrentCustomer, orderId, lineId);

    var errorMessage = "";
    switch (orderResult.Type)
    {
        case SalesOrderResultType.Deleted:
            errorMessage = "Item Removed. You now have no items in your basket.";
            break;
        case SalesOrderResultType.Failed:
            errorMessage =
                "Something went wrong and your item could not be removed from your cart. Please try again.";
            break;
        case SalesOrderResultType.FailedAlreadyComplete:
            errorMessage =
                "The item you are trying to remove is part of an order that has already been completed.";
            break;
        case SalesOrderResultType.NotFoundForCustomer:
            errorMessage =
                "The item which you are trying to delete does not belong to an order we can find for you.";
            break;
    }

    if (errorMessage.IsNotEmpty())
        return ErrorNotificationView(errorMessage);

    AddSuccessNotification("Your item has been deleted successfully.", false);

    if (Request.UrlReferrer != null)
        return Redirect(Request.UrlReferrer.ToString());

    return View();
}

La maggior parte del lavoro effettivo delle gambe viene eseguito in _salesOrderService.DeleteLine che controlla se l'ID ordine appartiene al cliente, rimuove l'elemento selezionato e infine rimuove l'intero ordine se non ci sono righe su di esso.

La mia domanda è: il servizio deve essere gestito da questo oppure dipende dal controller?

Dal mio punto di vista, l'ho messo nel servizio in quanto significa che posso rimuovere un elemento da un cestino degli utenti ovunque con relativa facilità, ma voglio assicurarmi che questo sia l'approccio corretto prima di continuare.

    
posta webnoob 11.11.2014 - 20:40
fonte

1 risposta

2

Sono nella scuola di pensiero dei "thin controller" - o in questo caso il servizio dovrebbe essere responsabile di tutte le operazioni di persistenza - il controller è lì solo per essere un agente di traffico tra le richieste HTTP e il livello di servizio - - invio di input, interpolazione risultati e facendo la cosa giusta. D'altra parte il livello di servizio dovrebbe essere beatamente inconsapevole di essere chiamato tramite un controller web, web api, app per console o qualsiasi altra cosa si possa usare.

    
risposta data 11.11.2014 - 20:55
fonte

Leggi altre domande sui tag