Пример #1
0
        public async Task <IActionResult> Modify(string heli, string arrivalAirport, string departureAirport, DateTime arrivalDateTime,
                                                 DateTime departureDateTime, string pilot, string seats, int flightId)
        {
            FlightFormViewModel vm = new FlightFormViewModel
            {
                Airports          = await _mediator.Send(new GetAllAirportQuery()),
                Planes            = await _mediator.Send(new GetAllPlanesQuery()),
                Heli              = heli,
                ArrivalAirport    = arrivalAirport,
                DepartureAirport  = departureAirport,
                ArrivalDateTime   = arrivalDateTime,
                DepartureDateTime = departureDateTime,
                Pilot             = pilot,
                Seats             = seats,
                FlightId          = flightId
            };

            if (ModelState.IsValid)
            {
                var planeObj = await _mediator.Send(new GetPlaneQuery(int.Parse(heli)));

                var pilotObj = await _mediator.Send(new GetUserByIdQuery(int.Parse(pilot)));

                var departureAirportObj = await _mediator.Send(new GetAirportQuery(int.Parse(departureAirport)));

                var arrivalAirportObj = await _mediator.Send(new GetAirportQuery(int.Parse(arrivalAirport)));

                await _mediator.Send(new UpdateFlightCommand(flightId, departureDateTime, arrivalDateTime, planeObj, pilotObj, departureAirportObj, arrivalAirportObj, int.Parse(seats)));

                return(RedirectToAction("Show"));
            }

            return(View(vm));
        }
Пример #2
0
        public async Task <IActionResult> Modify(int id)
        {
            var flight = await _mediator.Send(new GetFlightQuery(id));

            if (flight.CanBeCanceledOrModified())
            {
                FlightFormViewModel vm = new FlightFormViewModel
                {
                    Airports          = await _mediator.Send(new GetAllAirportQuery()),
                    Planes            = await _mediator.Send(new GetAllPlanesQuery()),
                    Heli              = flight.Plane.PlaneId.ToString(),
                    ArrivalAirport    = flight.ArrivalAirport.AirportId.ToString(),
                    DepartureAirport  = flight.DepartureAirport.AirportId.ToString(),
                    ArrivalDateTime   = flight.ArrivalTime,
                    DepartureDateTime = flight.DepartureTime,
                    Pilot             = flight.Pilot.UserId.ToString(),
                    Seats             = flight.Seats.ToString(),
                    FlightId          = id
                };

                return(View(vm));
            }

            return(NotFound());
        }
Пример #3
0
        public FlightFormViewModel GetDataForFlightForm()
        {
            var flightFormModel = new FlightFormViewModel();
            var cities          = GetCities();

            flightFormModel.Cities = cities;

            return(flightFormModel);
        }
Пример #4
0
        public async Task <IActionResult> Create()
        {
            FlightFormViewModel vm = new FlightFormViewModel
            {
                Airports = await _mediator.Send(new GetAllAirportQuery()),
                Planes   = await _mediator.Send(new GetAllPlanesQuery())
            };

            return(View(vm));
        }
Пример #5
0
        public int Add(FlightFormViewModel flightFormViewModel)
        {
            var arrival   = _cityRepository.GetCity(flightFormViewModel.ArrivalCity.Id);
            var departure = _cityRepository.GetCity(flightFormViewModel.DepartureCity.Id);

            var distance = CalculateDistance(departure.Longitude, departure.Latitude, arrival.Longitude, arrival.Latitude);

            flightFormViewModel.Distance = distance;

            var flight = _mapper.Map <Flight>(flightFormViewModel);

            var flightId = _flightRepository.Add(flight);

            return(flightId);
        }
Пример #6
0
        public async Task <IActionResult> Create(string heli, string arrivalAirport, string departureAirport, DateTime arrivalDateTime,
                                                 DateTime departureDateTime, string pilot, string seats, string recurrence, string recurrenceNbr)
        {
            FlightFormViewModel vm = new FlightFormViewModel
            {
                Airports          = await _mediator.Send(new GetAllAirportQuery()),
                Planes            = await _mediator.Send(new GetAllPlanesQuery()),
                Heli              = heli,
                ArrivalAirport    = arrivalAirport,
                DepartureAirport  = departureAirport,
                ArrivalDateTime   = arrivalDateTime,
                DepartureDateTime = departureDateTime,
                Pilot             = pilot,
                Seats             = seats,
                Recurrence        = recurrence,
                RecurrenceNbr     = recurrenceNbr
            };

            if (ModelState.IsValid)
            {
                var flight = new Flight()
                {
                    DepartureTime    = departureDateTime,
                    ArrivalTime      = arrivalDateTime,
                    DepartureAirport = await _mediator.Send(new GetAirportQuery(int.Parse(departureAirport))),
                    ArrivalAirport   = await _mediator.Send(new GetAirportQuery(int.Parse(arrivalAirport))),
                    Plane            = await _mediator.Send(new GetPlaneQuery(int.Parse(heli))),
                    Pilot            = await _mediator.Send(new GetUserByIdQuery(int.Parse(pilot))),
                    Seats            = int.Parse(seats)
                };
                if (recurrence == "onetime")
                {
                    await _mediator.Send(new CreateFlightCommand(flight));
                }
                else if (recurrence == "everyday")
                {
                    await _mediator.Send(new CreateFlightEveryDayOfWeekCommand(departureDateTime, arrivalDateTime, int.Parse(heli), int.Parse(pilot), int.Parse(departureAirport), int.Parse(arrivalAirport), int.Parse(seats)));
                }
                else
                {
                    await _mediator.Send(new CreateFlightEveryWeekCommand(departureDateTime, arrivalDateTime, int.Parse(heli), int.Parse(pilot), int.Parse(departureAirport), int.Parse(arrivalAirport), int.Parse(seats), int.Parse(recurrenceNbr)));
                }
                return(RedirectToAction("Show"));
            }

            return(View(vm));
        }
        public IActionResult CreateTravel()
        {
            var passports = new List <PassInfoOfficialTravelDto>();

            passports.Add(new PassInfoOfficialTravelDto()
            {
                OcupationId = 1, PassportNo = "1232154654"
            });
            var viewModel = new FlightFormViewModel()
            {
                Countries          = _context.Countries.ToList(),
                Occupations        = _context.Occupations.ToList(),
                OfficialTravelsDto = passports
            };

            return(View("FlightForm", viewModel));
        }
        //public IActionResult EditFlight(long id)
        //{
        //
        //}


        public IActionResult NewFlight()
        {
            var viewModel = new FlightFormViewModel()
            {
                Countries          = _context.Countries.ToList(),
                Occupations        = _context.Occupations.ToList(),
                OfficialTravelsDto = new List <PassInfoOfficialTravelDto>()
                {
                    new PassInfoOfficialTravelDto()
                    {
                        OcupationId = 1,
                        PassportNo  = "A151",
                        ReturnDate  = new DateTime()
                    }
                }
            };


            return(View("FlightForm", viewModel));
        }
        private void AddTravelsToDb(FlightFormViewModel viewModel, long ticketId)
        {
            if (viewModel.OfficialTravelsDto != null)
            {
                foreach (var officialtravelInfo in viewModel.OfficialTravelsDto)
                {
                    if (officialtravelInfo.PassportNo == "null")
                    {
                        continue;
                    }

                    var officialTravel = new OfficialTravel()
                    {
                        PassportId   = _context.Passports.Single(p => p.PassportNo == officialtravelInfo.PassportNo).Id,
                        OccupationId = officialtravelInfo.OcupationId,
                        TicketId     = ticketId,
                        ReturnDate   = officialtravelInfo.ReturnDate
                    };
                    _context.OfficialTravels.Add(officialTravel);
                }
            }
            if (viewModel.PermanentTravelsDto != null)
            {
                foreach (var permanentTravelInfo in viewModel.PermanentTravelsDto)
                {
                    if (permanentTravelInfo.PassportNo == "null")
                    {
                        continue;
                    }

                    var permanentTravel = new PermanentTravel()
                    {
                        PassportId   = _context.Passports.Single(p => p.PassportNo == permanentTravelInfo.PassportNo).Id,
                        OccupationId = permanentTravelInfo.OcupationId,
                        TicketId     = ticketId
                    };
                    _context.PermanentTravels.Add(permanentTravel);
                }
            }
        }
        public ActionResult Save(FlightFormViewModel flightFormViewModel)
        {
            if (!ModelState.IsValid)
            {
                var lightFlightPaths = InitializeFlightPaths();
                var lightStarships   = InitializeStarships();

                var viewModel = new ContainerFlightFormViewModel(flightFormViewModel, lightFlightPaths, lightStarships);
                return(View("FlightForm", viewModel));
            }

            Flight flightToDB;

            if (flightFormViewModel.FlightId == 0)
            {
                var starship = starshipRepository.GetSingleStarship(flightFormViewModel.StarshipId);
                flightToDB = new Flight(flightFormViewModel.GetDateTime(), flightFormViewModel.BasePrice, flightFormViewModel.FlightPathId, starship, flightFormViewModel.IsVIP);

                flightRepository.Add(flightToDB);
            }
            else
            {
                flightToDB = flightRepository.GetSingleFlight(flightFormViewModel.FlightId);

                if (flightToDB == null)
                {
                    return(HttpNotFound());
                }

                var starship = starshipRepository.GetSingleStarship(flightFormViewModel.StarshipId);
                flightToDB.Update(flightFormViewModel.GetDateTime(), flightFormViewModel.BasePrice, null, starship, null);
            }

            unitOfWork.Complete();

            InformViewsForCreateOrEdit(flightToDB, flightFormViewModel.FlightId);

            return(RedirectToAction("Index", "Flight"));
        }
Пример #11
0
 public IActionResult CreateFlight(FlightFormViewModel flightForm)
 {
     _flightService.Add(flightForm);
     return(RedirectToAction("Index", "Home"));
 }
        public IActionResult SaveFlight(FlightFormViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                viewModel.Occupations = _context.Occupations.ToList();
                viewModel.Countries   = _context.Countries.ToList();
                return(View("FlightForm", viewModel));
            }

            //Comprobar q todos los pasaportes existan
            //Comprobar q los Id de ocupacion existan
            //Comprobar q no se dupliquen los pasaportes
            for (int i = 0; i < (viewModel.OfficialTravelsDto?.Count ?? 0); i++)
            {
                var travelData = viewModel.OfficialTravelsDto[i];

                if (travelData.PassportNo == "null")
                {
                    continue;
                }

                bool existPassport = _context.Passports.SingleOrDefault(p => p.PassportNo == travelData.PassportNo) != null;
                if (!existPassport)
                {
                    viewModel.MissAnyPassport = true;
                    viewModel.Occupations     = _context.Occupations.ToList();
                    viewModel.Countries       = _context.Countries.ToList();
                    return(View("FlightForm", viewModel));
                }

                bool existOccupation = _context.Occupations.SingleOrDefault(o => o.Id == travelData.OcupationId) != null;
                if (!existOccupation)
                {
                    return(BadRequest());
                }

                bool returnDateCorrect = travelData.ReturnDate > viewModel.Ticket.DepartureDate;
                if (!returnDateCorrect)
                {
                    viewModel.ReturnDateIncorrect = true;
                    viewModel.Occupations         = _context.Occupations.ToList();
                    viewModel.Countries           = _context.Countries.ToList();
                    return(View("FlightForm", viewModel));
                }

                for (int j = i + 1; j < viewModel.OfficialTravelsDto.Count; j++)
                {
                    var toCompareData = viewModel.OfficialTravelsDto[j];
                    if (travelData.PassportNo == toCompareData.PassportNo)
                    {
                        viewModel.RepetedPassport = true;
                        viewModel.Occupations     = _context.Occupations.ToList();
                        viewModel.Countries       = _context.Countries.ToList();
                        return(View("FlightForm", viewModel));
                    }
                }
            }
            for (int i = 0; i < (viewModel.PermanentTravelsDto?.Count ?? 0); i++)
            {
                var travelData = viewModel.PermanentTravelsDto[i];

                if (travelData.PassportNo == "null")
                {
                    continue;
                }

                bool existPassport = _context.Passports.SingleOrDefault(p => p.PassportNo == travelData.PassportNo) != null;
                if (!existPassport)
                {
                    viewModel.MissAnyPassport = true;
                    viewModel.Occupations     = _context.Occupations.ToList();
                    viewModel.Countries       = _context.Countries.ToList();
                    return(View("FlightForm", viewModel));
                }

                bool existOccupation = _context.Occupations.SingleOrDefault(o => o.Id == travelData.OcupationId) != null;
                if (!existOccupation)
                {
                    return(BadRequest());
                }

                for (int j = i + 1; j < viewModel.PermanentTravelsDto.Count; j++)
                {
                    var toCompareData = viewModel.PermanentTravelsDto[j];
                    if (travelData.PassportNo == toCompareData.PassportNo)
                    {
                        viewModel.RepetedPassport = true;
                        viewModel.Occupations     = _context.Occupations.ToList();
                        viewModel.Countries       = _context.Countries.ToList();
                        return(View("FlightForm", viewModel));
                    }
                }
            }

            var  ticketInDb      = _context.Tickets.SingleOrDefault(t => t.Id == viewModel.OldTicketId);
            bool newTicketExists = _context.Tickets.SingleOrDefault(p =>
                                                                    p.OriginCountryId == viewModel.Ticket.OriginCountryId &&
                                                                    p.DestinyCountryId == viewModel.Ticket.DestinyCountryId &&
                                                                    p.DepartureDate == viewModel.Ticket.DepartureDate) != null;

            if (ticketInDb != null)
            {
                bool isModifiedTicketInfo =
                    ticketInDb.DepartureDate != viewModel.Ticket.DepartureDate ||
                    ticketInDb.OriginCountryId != viewModel.Ticket.OriginCountryId ||
                    ticketInDb.DestinyCountryId != viewModel.Ticket.DestinyCountryId;
                if (isModifiedTicketInfo && newTicketExists)
                {
                    viewModel.ExistOtherTicketInDb = true;
                    viewModel.Occupations          = _context.Occupations.ToList();
                    viewModel.Countries            = _context.Countries.ToList();
                    return(View("FlightForm", viewModel));
                }
                //Delete all travels with old ticket
                var officialTravels  = from ot in _context.OfficialTravels where ot.TicketId == ticketInDb.Id select ot;
                var permanentTravels = from pt in _context.PermanentTravels where pt.TicketId == ticketInDb.Id select pt;
                _context.OfficialTravels.RemoveRange(officialTravels.ToList());
                _context.PermanentTravels.RemoveRange(permanentTravels.ToList());
                _context.SaveChanges();

                ticketInDb.OriginCountryId  = viewModel.Ticket.OriginCountryId;
                ticketInDb.DestinyCountryId = viewModel.Ticket.DestinyCountryId;
                ticketInDb.DepartureDate    = viewModel.Ticket.DepartureDate;
                AddTravelsToDb(viewModel, ticketInDb.Id);
            }
            else if (newTicketExists)
            {
                viewModel.ExistOtherTicketInDb = true;
                viewModel.Occupations          = _context.Occupations.ToList();
                viewModel.Countries            = _context.Countries.ToList();
                return(View("FlightForm", viewModel));
            }
            else
            {
                _context.Tickets.Add(viewModel.Ticket);
                _context.SaveChanges();
                AddTravelsToDb(viewModel, viewModel.Ticket.Id);
            }

            _context.SaveChanges();
            return(RedirectToAction("Index", "Home"));
        }
 public IActionResult Save(FlightFormViewModel viewModel)
 {
     return(RedirectToAction("Index"));
 }