Пример #1
0
        public async Task <JoinTravelResponse> JoinTravel(JoinTravelRequest request)
        {
            var jsonDataList = await Read();

            var data = jsonDataList.FirstOrDefault(x => x.Id == request.Id);

            if (data == null)
            {
                return new JoinTravelResponse {
                           Id = "0", Message = "Not Found"
                }
            }
            ;

            if (data.AvailableSeatingCapacity < request.SeatingCount)
            {
                return new JoinTravelResponse {
                           Id = "0", Message = "Seating Capacity is not available"
                }
            }
            ;

            data.AvailableSeatingCapacity = data.AvailableSeatingCapacity - request.SeatingCount;
            await Write(jsonDataList);

            return(new JoinTravelResponse {
                Id = request.Id
            });
        }
Пример #2
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));
            }
        }