Пример #1
0
        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;
        }
Пример #2
0
        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);
        }
Пример #3
0
        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;
        }
Пример #4
0
        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;
        }