public ActionResult <ExpertDto> UpdateExpert(Guid expertId,
                                                     ExpertForCreationDto expertInput)
        {
            if (!expertRepository.ExpertExist(expertId))
            {
                return(NotFound());
            }
            var expert = expertRepository.GetExpert(expertId);

            if (expert.Email != expertInput.Email)
            {
                if (expertRepository.GetExperts()
                    .Any(e => e.Email == expertInput.Email))
                {
                    return(Conflict($"Email address {expertInput.Email} already belongs to another expert"));
                }
            }

            var expertToUpdate = mapper.Map <Expert>(expertInput);

            expertRepository.UpdateExpert(expertId, expertToUpdate);
            expertRepository.Save();

            var expertToReturn = mapper.Map <ExpertDto>(expertRepository.GetExpert(expertId));

            return(CreatedAtRoute("GetExpert", new { expertId = expertToReturn.Id },
                                  expertToReturn));
        }
        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 ActionResult <ExpertDto> UpdateExpert(Guid expertId,
                                                     ExpertForCreationDto expertInput)
        {
            if (!expertRepository.ExpertExist(expertId))
            {
                return(NotFound());
            }

            var expertToUpdate = mapper.Map <Expert>(expertInput);

            expertRepository.UpdateExpert(expertId, expertToUpdate);
            expertRepository.Save();

            var expertToReturn = mapper.Map <ExpertDto>(expertRepository.GetExpert(expertId));

            return(CreatedAtRoute("GetExpert", new { expertId = expertToReturn.Id },
                                  expertToReturn));
        }