public IActionResult CreateWorkItem(int projectId, [FromBody] WorkItemForCreationDto workItemForCreationDto) { if (workItemForCreationDto == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (!_HoursApiRepository.ProjectExists(projectId)) { return(NotFound()); } var finalWorkItem = Mapper.Map <Entities.WorkItem>(workItemForCreationDto); _HoursApiRepository.AddWorkItemForProject(projectId, finalWorkItem); if (!_HoursApiRepository.Save()) { return(StatusCode(500, "A problem happened while handling your request.")); } var createdWorkItemToReturn = Mapper.Map <Models.WorkItemDto>(finalWorkItem); return(CreatedAtRoute("GetWorkItem", new { ProjectId = projectId, id = createdWorkItemToReturn.Id }, createdWorkItemToReturn)); }
public IActionResult CreateProject([FromBody] ProjectForCreationDto projectForCreationDto) { if (projectForCreationDto == null) { return(BadRequest()); } //todo: Better validation checks if (projectForCreationDto.Description == projectForCreationDto.Name) { ModelState.AddModelError("Description", "The provided description should be different from the name."); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var project = Mapper.Map <Project>(projectForCreationDto); //todo: Improve this project.WorkItems = new List <WorkItem>(); _hoursApiRepository.AddProject(project); if (!_hoursApiRepository.Save()) { return(StatusCode(500, "A problem happened while handling your request.")); } var createdProjectToReturn = Mapper.Map <Models.ProjectDto>(project); _logger.LogInformation("$Project created with id {createdProjectToReturn.Id}."); return(CreatedAtRoute("GetProject", new { id = createdProjectToReturn.Id }, createdProjectToReturn)); }