public bool Add(ProjectServiceDTO projectDto) { if (projectDto == null) throw new ArgumentNullException("projectDto"); Project dbProject = _db.Query<Project>().GetByName(projectDto.Name); if (dbProject != null) return false; Member responsable = _db.Query<Member>().GetById(projectDto.ResponsableId); Client client = _db.Query<Client>().GetById(projectDto.ClientId); _db.Insert(projectDto.CopyToDomainObject(responsable, client)); return true; }
public ActionResult Create(ProjectServiceDTO projectDto) { // Verificar erros no modelo if (!ModelState.IsValid) return View(projectDto); // Verificar erros de negocio if (!_projectsService.Add(projectDto)) { ModelState.AddModelError("Name", "This name belongs to another project"); return View(projectDto); } // Sucesso ViewBag.Who = projectDto.Name; return View("CUD", ActionEnum.Created); }
public bool Update(ProjectServiceDTO projectDto) { if (projectDto == null) throw new ArgumentNullException("projectDto"); Project dbProject = _db.Query<Project>().GetByIdIncludeResponsableAndWorkers(projectDto.ProjectID); Project dbProjectFind; if (dbProject.Name != projectDto.Name && ((dbProjectFind = _db.Query<Project>().GetByName(projectDto.Name)) != null) && dbProjectFind.ProjectID != dbProject.ProjectID) return false; // // verificar se o responsavel mudou => ir a tabela intermedia workers // e se existir um worker com o mesmo id, retira-lo dessa tabela Member responsable; if(dbProject.Responsable.UserID != projectDto.ResponsableId) { Member possibleConflictMember = dbProject.Workers.SingleOrDefault(m => m.UserID == projectDto.ResponsableId); if(possibleConflictMember != null) { dbProject.Workers.Remove(possibleConflictMember); } responsable = _db.Query<Member>().GetById(projectDto.ResponsableId); }else { responsable = dbProject.Responsable; } Client client = _db.Query<Client>().GetById(projectDto.ClientId); dbProject.UpdateDomainObject(projectDto, responsable, client); return true; }
public ProjectServiceDTO GetProjectById(int projectId) { var initialData = new ProjectQueryCreateUpdate { Clients = _db.Query<Client>().Select(c => new KeyIdValueString {Id = c.UserID, Value = c.Name}). ToList(), Members = _db.Query<Member>().Select(c => new KeyIdValueString {Id = c.UserID, Value = c.Name}). ToList(), }; var returnValue = new ProjectServiceDTO {InitialData = initialData}; if(projectId > 0) { Project dbProject = _db.Query<Project>().Where(p => p.ProjectID == projectId) .Include(p => p.Responsable) .Include(p => p.Client) .Single(); returnValue.ClientId = dbProject.Client.UserID; returnValue.ResponsableId = dbProject.Responsable.UserID; returnValue.ProjectID = dbProject.ProjectID; returnValue.Name = dbProject.Name; returnValue.Description = dbProject.Description; returnValue.Enabled = dbProject.Enabled; } return returnValue; }