public void Add(CommentServiceDto commentDto) { if(commentDto == null) throw new ArgumentNullException("commentDto"); // Necessito de ser membro Member dbMember = GetDbMember(); // // Os membros podem inserir comentarios nos issues cujo o projecto associado // ao issue pertenca a lista de projectos do membro // Obter lista de ids de projectos do membro var myProjectsIds = _db.Query<Member>() .GetProjectsIdsWhereIamResponsableOrWork(dbMember.UserID); // Obter issue Issue dbIssue = _db.Query<Issue>().GetByIdIncludeAll(commentDto.IssueID); if(!myProjectsIds.Any(pid => pid == dbIssue.Project.ProjectID)) throw new HijackedException("You are not assigned to the project that has this issue"); // Insere no repositorio _db.Insert(commentDto.CopyToDomainObject(dbMember, dbIssue)); // Gravar persistente _db.SaveToDisk(); }
public void Add(CommentServiceDto commentDto) { if (commentDto == null) throw new ArgumentNullException("commentDto"); Client dbClient = GetDbClient(); // // Os clientes podem inserir comentarios nos issues cujo o projecto associado // ao issue pertenca a lista de projectos do cliente // Obter lista de ids de projectos associados ao cliente var myProjectsIds = _db.Query<Client>().GetMyProjectsIds(dbClient.UserID); // Obter issue Issue dbIssue = _db.Query<Issue>().GetByIdIncludeAll(commentDto.IssueID); if (!myProjectsIds.Any(pid => pid == dbIssue.Project.ProjectID)) throw new HijackedException("You are not assigned to the project that has this issue"); // Insere no repositorio _db.Insert(commentDto.CopyToDomainObject(dbClient, dbIssue)); // Gravar persistente _db.SaveToDisk(); }
public void Add(CommentServiceDto commentDto) { if(commentDto == null) throw new ArgumentNullException("commentDto"); // Verificar se sou admin Member dbAdmin = GetDbAdmin(); // // Os admins podem inserir comentários nos issues de qualquer projecto Issue dbIssue = _db.Query<Issue>().GetByIdIncludeAll(commentDto.IssueID); // Insere no repositorio _db.Insert(commentDto.CopyToDomainObject(dbAdmin, dbIssue)); // Gravar persistente _db.SaveToDisk(); }
// // GET: /Issue/{issueId}/Comments/Create?description=... public ActionResult Create(int issueId, CommentServiceDto commentDto) { if (!ModelState.IsValid) return Json(new { invalid = true }); // É valido, atribui issueId commentDto.IssueID = issueId; // Saber qual o serviço a invocar if (User.IsInRole(LoginService.Admin)){ var adminService = ObjectsManager.GetInstance<ICommentsAdminService>(); adminService.Add(commentDto); // Internamente invoca SaveChanges } else{ if (User.IsInRole(LoginService.Member)){ var memberService = ObjectsManager.GetInstance<ICommentsMemberService>(); memberService.Add(commentDto); // Internamente invoca SaveChanges } else{ var clientService = ObjectsManager.GetInstance<ICommentsClientService>(); clientService.Add(commentDto); // Internamente invoca SaveChanges } } return IndexPaging(issueId); }