Beispiel #1
0
        public ActionResult <ProjectAndRole> AddExistingProjectToExpert(Guid expertId,
                                                                        ProjectAndRole projectAndRole)
        {
            if (!expertRepository.ExpertExist(expertId))
            {
                return(NotFound());
            }

            var expert = expertRepository.GetExpertIncludedProjectsAndRoles(expertId);

            if (expertRepository
                .ProjectIsAssociatedWithExpert(expert.Id, projectAndRole.Project.Id))
            {
                var expertProject = expert.ExpertProjects
                                    .FirstOrDefault(ep => ep.ProjectId == projectAndRole.Project.Id);
                return(Conflict($"{expertProject.Project.Name} is already associated with {expertProject.Expert.FirstName} " +
                                $"{expertProject.Expert.LastName}"));
            }

            expertRepository.AddExpertProject(expert.Id, projectAndRole.Project.Id);
            expertRepository.Save();

            var projectAndRoleToReturn = expertRepository.GetExpertWithProjectsMap(expertId)
                                         .ProjectsAndRoles.FirstOrDefault(par => par.Project.Id == projectAndRole.Project.Id);

            return(CreatedAtRoute("GetExpertProject", new
            {
                expertId = expert.Id,
                projectId = projectAndRoleToReturn.Project.Id
            },
                                  projectAndRoleToReturn));
        }
        public ActionResult <ExpertDto> CreateExpert(ExpertForCreationDto expertInput)
        {
            var expertToCreate = mapper.Map <Expert>(expertInput);

            expertRepository.CreateExpert(expertToCreate);
            expertRepository.Save();

            var expertToReturn = mapper.Map <ExpertDto>(expertToCreate);

            return(CreatedAtRoute("GetExpert", new { expertId = expertToReturn.Id },
                                  expertToReturn));
        }
        public ActionResult <ExpertDto> CreateExpert(ExpertForCreationDto expertInput)
        {
            if (expertRepository.GetExperts()
                .Any(e => e.Email == expertInput.Email))
            {
                return(Conflict($"{expertInput.Email} already exists"));
            }
            var expertToCreate = mapper.Map <Expert>(expertInput);

            expertRepository.CreateExpert(expertToCreate);
            expertRepository.Save();

            var expertToReturn = mapper.Map <ExpertDto>(expertToCreate);

            return(CreatedAtRoute("GetExpert", new { expertId = expertToReturn.Id },
                                  expertToReturn));
        }
        public async Task Save()
        {
            await _companyRepository.Save(true);

            await _recordRepository.Save(true);

            await _expertRepository.Save();

            await _photoRepository.Save();
        }