Сомневаюсь в том, как отображать представления и вызывать сервисы для разных проверенных лиц в веб-приложении MVC. - PullRequest
0 голосов
/ 02 августа 2011

У меня есть сомнения, и мне нужна ваша помощь. Я делаю проект для колледжа, и у меня есть следующая проблема.

Мой проект направлен на решение проблем конкретных проектов. В проекте обычно связаны с участниками (которые решают проблемы) и клиентами которые сообщают об этой проблеме.

Моя проблема начинается здесь:

Приложение представляет собой веб-приложение и использует механизм входа в систему для администраторов, участников и клиентов. Клиенты сообщают, участники решают.

Итак, я вижу следующее: Форма для клиентов, это добавить, обновить и позволяет всю информацию к проблеме. Участники, с другой стороны, изменяют состояние вопроса в соответствии с его решением.

Я делаю веб-приложение MvC3, мой вопрос заключается в том ... как основанный на аутентифицированном человеке делает разные взгляды а также услуги вызова на разных уровнях бизнеса.

На данный момент мои контроллеры играют роль проверки того, что пользователь имеет доступ через роли, но ничего другого ... кто проверяет идентичность, является бизнес-уровнем. Как и где принять это решение, и как избежать того, чтобы слова if и elses распространились по всему коду?

1 Ответ

0 голосов
/ 02 августа 2011
public interface IQueryService {
...
#region Issues


IEnumerable<IssueQueryList> GetIssues(int currentPage, int take);



IssueServiceClientDTO GetIssueById(int issueId);

#endregion
...

}

У меня в конечном итоге будет GetIssueByIdMember (...), который возвращает проблему для члена с различными данными DTO.

public sealed class IssueService : ServiceBase, IIssueService
{
    public IssueService(IRepository db) : base(db) 
    {

    }


    public void Add(IssueServiceClientDTO issueServiceClient)
    {
        if (issueServiceClient == null)
            throw new ArgumentNullException("issueServiceClient");

        User dbUser = CurrentUser;
        Client dbClient;

        if (dbUser == null || (dbClient = dbUser as Client) == null)
            throw new InvalidOperationException();

        Project dbProject = _db.Query<Project>().GetById(issueServiceClient.ProjectId);
        _db.Insert(issueServiceClient.CopyToDomainObject(dbProject, dbClient));


    }

это только дляклиент ... но когда у меня есть член (в другом классе) для уровня представления или откуда-то, мне в конечном итоге нужно будет знать, какую службу вызывать ...

Это служба запросов, ноу меня будут услуги для клиентов и для участников тоже.

Но мне нужно знать заранее (на основе аутентификации пользователя), какой метод вызывать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...