asp.net mvc - optymalne raportowanie błędów użytkownikowi

0

Siema

W wielu miejscach w aplikacji, sprawdzam wpierw w kontrolerze, czy użytkownik może wywołać pewną akcję z serwisu.

Np. Chce dołączyć do drużyny. Sprawdzamy wpierw czy nie wysłał już wcześniej prośby o dołączenie.

public ViewResult SendTeamJoinRequest(int teamId = 0)
        {
            if (teamId != 0)
            {
                if (TeamService.CheckIfUserHasNoJoinRequestsToTeam(teamId, User.Identity.GetUserId()))
                {
                    if (TeamService.SendTeamJoinRequests(teamId, User.Identity.GetUserId()))
                    {
                        Response.StatusCode = (int)HttpStatusCode.Accepted;
                        ViewBag.Info = $"Prośba o dołączenie do drużyny o numerze {teamId} została wysłana.";
                        return View("InfoError");
                    }

                    Response.StatusCode = (int) HttpStatusCode.BadRequest;
                    ViewBag.Info = "Już wysłałeś prośbe o dołaczenie do tej drużyny";
                    return View("InfoError");
                }
            }

            Response.StatusCode = (int)HttpStatusCode.BadRequest;
            ViewBag.Info = "Brak sprecyzowanej drużyny do której wysyłasz prośbę.";
            return View("InfoError");
        }
 

TeamService.CheckIfUserHasNoJoinRequestsToTeam(teamId, User.Identity.GetUserId()) - jeśli słabo nazwałem metodę to tłumaczę - sprawdzamy czy użytkownik nie wysłał już prośby o dołaczenie.
TeamService.SendTeamJoinRequests(teamId, User.Identity.GetUserId()) - jeśli nie wysłał, to pozwalamy mu wysłać.

No i takich if-ów jest czasami więcej co średnio wygląda i prawdopodobnie "średnie" rozwiązanie, z tego względu, że tworzymy po kilka razy dbContext, wysyłamy po kilka razy zapytanie które wyciąga te same dane. Minusów pewnie jest więcej.

Tutaj znalazłem ciekawe rozwiązanie (pierwsza odpowiedź)
http://stackoverflow.com/questions/5164079/what-is-a-good-way-to-pass-a-confirmation-or-error-message-back-to-a-view

Po prostu będę sprawdzał czy serwis wykryły jakieś błędy, ew je wypisywał jeśli będą krytyczne.

Przed implementacją, chce zapytać czy macie jakieś inne pomysły oprócz tego w/w albo ja go ocenicie ?

1

No jest to średnie, bo to proceduralny kod biznesowy wklejony do kontrolera, na dodatek sporo tu kopiuj-wklej.

Najlepiej by było, gdyby logika biznesowa była ukryta w serwisie, który zwraca po prostu komunikat/kod błędu do kontrolera, a ten go wyświetla.

1 użytkowników online, w tym zalogowanych: 0, gości: 1