public IActionResult Put(Guid id, ScheduleUpdateDto scheduleUpdateDto) { var schedule = _repository.FindByIdWithAssociations(id); if (schedule == null) { return(NotFound()); } if (scheduleUpdateDto.ActualStart.Date > scheduleUpdateDto.ActualEnd.Date) { return(UnprocessableEntity("A data inicial dev ser menor ou igual a data final.")); } if (_repository.IsAnyScheduleAtRange(scheduleUpdateDto.EmployeeId, scheduleUpdateDto.ActualStart, scheduleUpdateDto.ActualEnd)) { return(UnprocessableEntity("O funcionário indicado já possui um agendamento para esse intervalo.")); } _mapper.Map(scheduleUpdateDto, schedule); _repository.Update(schedule); if (_repository.SaveChanges()) { return(Ok(_mapper.Map <ScheduleWithDetailsReadDto>(schedule))); } else { return(BadRequest()); } }
public async Task <IActionResult> UpdateScheduleAsync( [FromRoute, SwaggerParameter("Id of employee to update schedule for", Required = true)] Guid employeeId, [FromRoute, SwaggerParameter("Id of schedule to update", Required = true)] Guid scheduleId, [FromBody, SwaggerParameter("schedule object to update with", Required = true)] ScheduleUpdateDto scheduleToUpdate, [FromHeader(Name = "accept"), SwaggerParameter("Request Hateoas")] string mediaType) { if (!await _scheduleRepository.EntityExists <Employee>(e => e.Id == employeeId)) { return(NotFound()); } var foundSchedule = await _scheduleRepository.GetFirstByConditionAsync(j => j.Id == scheduleId); if (foundSchedule == null) { var scheduleToAdd = Mapper.Map <Schedule>(scheduleToUpdate); scheduleToAdd.Id = Guid.NewGuid(); scheduleToAdd.EmployeeId = employeeId; _scheduleRepository.Create(scheduleToAdd); if (!await _scheduleRepository.SaveChangesAsync()) { throw new Exception("Failed to save on upserting"); } var scheduleToReturn = Mapper.Map <ScheduleDto>(await _scheduleRepository.GetFirstByConditionAsync(j => j.Id == scheduleToAdd.Id)); if (mediaType == "application/vnd.AO.json+hateoas") { var shapedSchedule = _controllerHelper.ShapeAndAddLinkToObject(scheduleToReturn, "Employee", null); return(CreatedAtRoute("GetEmployee", new { employeeId, scheduleId = scheduleToReturn.Id }, shapedSchedule)); } return(CreatedAtRoute("GetSchedule", new { employeeId, scheduleId = scheduleToReturn.Id }, scheduleToReturn)); } Mapper.Map(scheduleToUpdate, foundSchedule); _scheduleRepository.Update(foundSchedule); if (!await _scheduleRepository.SaveChangesAsync()) { throw new Exception("Failed to save on updating"); } return(NoContent()); }
private async Task <ScheduleUpdateDto> AddSchedule(ScheduleDtoForImportExcel scheduleDto) { var result = new ScheduleUpdateDto(); var process = await _repoProcess.FindAll().FirstOrDefaultAsync(x => x.Name.ToUpper().Equals(scheduleDto.Process.ToUpper())); if (process != null) { result.ProcessID = process.ID; } result.ModelName = scheduleDto.ModelName; result.ModelNo = scheduleDto.ModelNo; result.ArticleNo = scheduleDto.ArticleNo; result.Treatment = scheduleDto.Process; result.Process = scheduleDto.Object; result.Part = scheduleDto.Part; result.CreatedBy = scheduleDto.CreatedBy; result.ProductionDate = scheduleDto.ProductionDate; return(result); }
public async Task <IActionResult> PartialUpdateScheduleAsync( [FromRoute, SwaggerParameter("Id of employee to update schedule for", Required = true)] Guid employeeId, [FromRoute, SwaggerParameter("Id of schedule to update", Required = true)] Guid scheduleId, [FromBody, SwaggerParameter("json patch operations to perform", Required = true)] JsonPatchDocument <ScheduleUpdateDto> scheduleToPartialUpdate, [FromHeader(Name = "accept"), SwaggerParameter("Request Hateoas")] string mediaType) { if (!await _scheduleRepository.EntityExists <Employee>(e => e.Id == employeeId)) { return(NotFound()); } var foundSchedule = await _scheduleRepository.GetFirstByConditionAsync(j => j.Id == scheduleId); if (foundSchedule == null) { var scheduleToCreate = new ScheduleUpdateDto(); // check if necessary scheduleToPartialUpdate.ApplyTo(scheduleToCreate, ModelState); if (!ModelState.IsValid) { throw new Exception("invalid model state"); } var scheduleToAdd = Mapper.Map <Schedule>(scheduleToCreate); scheduleToAdd.Id = Guid.NewGuid(); scheduleToAdd.EmployeeId = employeeId; _scheduleRepository.Create(scheduleToAdd); if (!await _scheduleRepository.SaveChangesAsync()) { throw new Exception("Failed to save on upserting"); } var scheduleToReturn = Mapper.Map <ScheduleDto>(await _scheduleRepository.GetFirstByConditionAsync(j => j.Id == scheduleToAdd.Id)); if (mediaType == "application/vnd.AO.json+hateoas") { var shapedSchedule = _controllerHelper.ShapeAndAddLinkToObject(scheduleToReturn, "Schedule", null); return(CreatedAtRoute("GetEmployee", new { employeeId, scheduleId = scheduleToReturn.Id }, shapedSchedule)); } return(CreatedAtRoute("GetSchedule", new { employeeId, scheduleId = scheduleToReturn.Id }, scheduleToReturn)); } var scheduleToPatch = Mapper.Map <ScheduleUpdateDto>(foundSchedule); scheduleToPartialUpdate.ApplyTo(scheduleToPatch, ModelState); if (!ModelState.IsValid) { throw new Exception("invalid model state"); } Mapper.Map(scheduleToPatch, foundSchedule); _scheduleRepository.Update(foundSchedule); if (!await _scheduleRepository.SaveChangesAsync()) { throw new Exception("Failed to save on updating"); } return(NoContent()); }