public async Task <IActionResult> UpdateProject(int id, [FromBody] ProjectBaseDto dto) { try { if (dto == null || id == 0) { return(BadRequest()); } var exists = await _sdlcSystemAppService.CheckSdlcSystemExists(dto.SdlcSystemId); if (!exists) { return(NotFound()); } var conflictSystem = await _projectAppService.CheckForConflictingSystem(dto.SdlcSystemId, id); if (conflictSystem && string.IsNullOrWhiteSpace(dto.ExternalId) && string.IsNullOrWhiteSpace(dto.Name)) { return(Conflict()); } var conflictExternalId = await _projectAppService.CheckForConflictingExternalId(dto.ExternalId, id); if (conflictExternalId && dto.SdlcSystemId == 0 && string.IsNullOrWhiteSpace(dto.Name)) { return(Conflict()); } var result = await _projectAppService.UpdateProject(id, dto); if (!result.Value) { return(NotFound()); } if (result == null) { return(StatusCode(500, "A problem occurred while handling your request.")); } return(Ok());//We have also the option to return NoContent(); instead, for update usually, successfull request that shouldn't return anything } catch (Exception ex) { _log4net.Info(ex.Message, ex); return(StatusCode(500)); } }
public ProjectDto CreateProject(ProjectBaseDto projectDto) { try { var itemToCreate = _mapper.Map <Project>(projectDto); _projectRepository.Add(itemToCreate); _projectRepository.Save(); var createdDto = _mapper.Map <ProjectDto>(itemToCreate); return(createdDto); } catch (Exception ex) { _log4net.Info(ex.Message, ex); throw; } }
public async Task <IActionResult> CreateProject([FromBody] ProjectBaseDto dto) { try { if (dto == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var exists = await _sdlcSystemAppService.CheckSdlcSystemExists(dto.SdlcSystemId); if (!exists) { return(NotFound()); } var conflict = await _projectAppService.CheckForConflicting(dto.SdlcSystemId, dto.ExternalId); if (conflict) { return(Conflict()); } var result = _projectAppService.CreateProject(dto); return(result == null?StatusCode(500, "A problem occurred while handling your request.") : CreatedAtRoute("GetProject", new { id = result.Id }, result)); } catch (Exception ex) { _log4net.Info(ex.Message, ex); return(StatusCode(500)); } }
public async Task <bool?> UpdateProject(int id, ProjectBaseDto projectDto) { try { var entityToUpdate = await _projectRepository.Get(id); if (entityToUpdate == null) { return(false); } entityToUpdate.LastModificationTime = Clock.Now; _mapper.Map(projectDto, entityToUpdate); if (!_projectRepository.Save()) { return(null); } return(true); } catch (Exception ex) { _log4net.Info(ex.Message, ex); throw; } }