public IActionResult CreateSchedule(ScheduleCreateDto scheduleCreateDto) { var scheduleModel = _mapper.Map <Schedule>(scheduleCreateDto); if (scheduleModel.ActualStart.Date > scheduleModel.ActualEnd.Date) { return(UnprocessableEntity("A data inicial deve ser menor ou igual a data final.")); } if (_repository.IsAnyScheduleAtRange(scheduleCreateDto.EmployeeId, scheduleCreateDto.ActualStart, scheduleCreateDto.ActualEnd)) { return(UnprocessableEntity("O funcionário indicado já possui um agendamento para esse intervalo.")); } _repository.Create(scheduleModel); if (_repository.SaveChanges()) { return(Ok(_mapper.Map <ScheduleReadDto>(scheduleModel))); } else { return(BadRequest()); } }
//[ProducesResponseType(typeof(ScheduleGetDto), (int)HttpStatusCode.Created)] public IActionResult Post([FromBody] ScheduleCreateDto scheduleCreateDto) { var stringUserId = User.FindFirst(ClaimTypes.Name)?.Value; var userId = int.Parse(stringUserId); scheduleCreateDto.UserId = userId; var schedule = _scheduleRepository.CreateSchedule(scheduleCreateDto); return(Created("[controller]", schedule)); }
public async Task <IActionResult> CreateScheduleAsync( [FromRoute, SwaggerParameter("Id of employee to create schedule for", Required = true)] Guid employeeId, [FromBody, SwaggerParameter("Schedule object to create", Required = true)] ScheduleCreateDto scheduleToCreate, [FromQuery, SwaggerParameter("Request which fields you want returned")] string fields, [FromHeader(Name = "accept"), SwaggerParameter("Request Hateoas")] string mediaType) { if (!await _scheduleRepository.EntityExists <Employee>(e => e.Id == employeeId)) { return(NotFound()); } 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 creating"); } var foundSchedule = await _scheduleRepository.GetFirstByConditionAsync(j => j.Id == scheduleToAdd.Id); var scheduleToreturn = Mapper.Map <ScheduleDto>(foundSchedule); if (mediaType == "application/vnd.AO.json+hateoas") { var shapedSchedule = _controllerHelper.ShapeAndAddLinkToObject(scheduleToreturn, "Schedule", fields); return(CreatedAtRoute("GetSchedule", new { employeeId, scheduleId = scheduleToreturn.Id }, shapedSchedule)); } if (!string.IsNullOrWhiteSpace(fields)) { var shapedSchedule = scheduleToreturn.ShapeData(fields); return(CreatedAtRoute("GetSchedule", new { employeeId, scheduleId = scheduleToreturn.Id }, shapedSchedule)); } return(CreatedAtRoute("GetEmployee", new { employeeId, scheduleId = scheduleToreturn.Id }, scheduleToreturn)); }
public ScheduleGetDto CreateSchedule(ScheduleCreateDto scheduleCreateDto) { var schedule = new Schedule { UserId = scheduleCreateDto.UserId, AvailabilityId = scheduleCreateDto.AvailabilityId, PositionId = scheduleCreateDto.PositionId }; _context.Set <Schedule>().Add(schedule); _context.SaveChanges(); var scheduleGetDto = new ScheduleGetDto { Id = schedule.Id, UserId = schedule.UserId, AvailabilityId = schedule.AvailabilityId, PositionId = schedule.PositionId }; return(scheduleGetDto); }