Beispiel #1
0
        public async Task <ActionResult <Travel> > JoinTravels(int id, [FromBody] JoinTravelRequest request)
        {
            try
            {
                var travel = await _travelRepository.FindById(request.Id);

                var employeeTravels = await _employeeTravelRepository.FindByTravelId(request.Id);

                var travelMain = await _travelRepository.FindById(id);

                if (Math.Abs((travel.StartTime - travelMain.StartTime).Days) <= 1)
                {
                    foreach (var employeeTravel in employeeTravels)
                    {
                        employeeTravel.Travel = travelMain;
                        await _employeeTravelRepository.Update(employeeTravel);
                    }

                    await _travelRepository.Delete(travel);

                    return(Ok());
                }
                else
                {
                    return(Conflict("Too different start dates"));
                }
            }
            catch (ArgumentException e)
            {
                return(Conflict(e.Message));
            }
            catch (InvalidOperationException e)
            {
                return(Conflict(e.Message));
            }
        }