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());
            }
        }
Esempio n. 2
0
        //[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));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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);
        }