public async virtual Task <ActionResult> Create(CreateFlightViewModel flightModel) { if (ModelState.IsValid) { Flight flight = new Flight(); var sourceAiport = this.aiportList.FirstOrDefault(x => x.Code == flightModel.SourceAirportID); var destinationAiport = this.aiportList.FirstOrDefault(x => x.Code == flightModel.DestinationAirportID); Mapper.Map <CreateFlightViewModel, Flight>(flightModel, flight); Mapper.Map <AiportViewModel, Aiport>(sourceAiport, flight.Source); Mapper.Map <AiportViewModel, Aiport>(destinationAiport, flight.Destination); flight.LastModifiedUser = User.Identity.Name; flight.LastModifiedDate = DateTime.Now; flight.Id = await flightService.PostFlight(flight); return(RedirectToAction("Index")); } else { ViewBag.IsNew = true; ViewBag.AiportList = this.aiportList; return(View(flightModel)); } }
public async Task <IActionResult> Create(CreateFlightViewModel inputModel) { var flight = new Flight { FromAirport = inputModel.FromAirport, ToAirport = inputModel.ToAirport, Airplane = inputModel.AirplaneId }; await this.flights.Save(flight); return(Ok()); }
public IActionResult CreateFlight(CreateFlightViewModel model) { if (ModelState.IsValid) { Flight flight = new Flight() { From = model.From, To = model.To, BusinessCapacity = model.BusinessCapacity, EconomyCapacity = model.EconomyCapacity, PilotName = model.PilotName, PlaneModel = model.PlanetModel, PlaneId = model.AirplaneId, Arrival = new DateTime(model.DateOfArrival.Year, model.DateOfArrival.Month, model.DateOfArrival.Day, model.TimeOfArrival.Hour, model.TimeOfArrival.Minute, 0), Departure = new DateTime(model.DateOfDeparture.Year, model.DateOfDeparture.Month, model.DateOfDeparture.Day, model.TimeOfDeparture.Hour, model.TimeOfDeparture.Minute, 0) }; if (flight.Arrival < flight.Departure) { ViewData["Error"] = "Arrival cannot be before Departure!"; return(View(model)); } else if (flight.Departure < DateTime.Now) { ViewData["Error"] = "Date of departure should be after current time"; return(View(model)); } else { context.Flights.Add(flight); context.SaveChanges(); } } else { ViewData["Error"] = "Something went wrong"; return(View()); } return(View("Flights", GetAllUpcomingFlights(true))); }
public IActionResult Create() { CreateFlightViewModel model = new CreateFlightViewModel() { Airplanes = _flightRepository.GetComboAirplanes(), Destinations = _flightRepository.GetComboDestinations(), Status = _flightRepository.GetComboStatus(), StatusId = 1, }; ViewBag.minDate = DateTime.Now; ViewBag.format = "dd/MM/yyyy HH:mm"; return(View(model)); }
public ActionResult Create(CreateFlightViewModel createFlightViewModel) { if (ModelState.IsValid) { int year = createFlightViewModel.Date.Year; int month = createFlightViewModel.Date.Month; int day = createFlightViewModel.Date.Day; int hours = createFlightViewModel.Hours; int minutes = createFlightViewModel.Minutes; DateTime flightDate = new DateTime(year, month, day, hours, minutes, 0); bool err = false; if (createFlightViewModel.ToAirportId == createFlightViewModel.FromAirportId) { ViewBag.SameAirportErrorMessage = "Ne smeju biti izabrani isti aerodromi!"; err = true; } if (flightDate < DateTime.Now.AddDays(1)) { ViewBag.TimeOfFlightErrorMessage = "Let se mora kreirati barem dan pre njegovog trenutka polaska!"; err = true; } if (!err) { int ticketsLeft = db.Avions.Single(a => a.Id == createFlightViewModel.AvionId).Capacity; Flight flight = new Flight { AvionId = createFlightViewModel.AvionId, FromAirportId = createFlightViewModel.FromAirportId, ToAirportId = createFlightViewModel.ToAirportId, price = createFlightViewModel.Price, time = flightDate, TicketsLeft = ticketsLeft }; db.Flights.Add(flight); db.SaveChanges(); return(RedirectToAction("Index")); } } ViewBag.AvionId = new SelectList(db.Avions, "Id", "Model", createFlightViewModel.AvionId); ViewBag.FromAirportId = new SelectList(db.Airports, "Id", "Name", createFlightViewModel.FromAirportId); ViewBag.ToAirportId = new SelectList(db.Airports, "Id", "Name", createFlightViewModel.ToAirportId); return(View(createFlightViewModel)); }
// GET: FlightsController/Create public ActionResult Create() { string airport = ""; Dictionary <string, object> queryDict = new Dictionary <string, object>(); queryDict.Add("airport", airport); var query = new Neo4jClient.Cypher.CypherQuery("MATCH (n:Airport) RETURN n", queryDict, CypherResultMode.Set); var airports = ((IRawGraphClient)client).ExecuteGetCypherResults <Airport>(query).ToList(); CreateFlightViewModel viewModel = new CreateFlightViewModel() { Airports = airports }; return(View(viewModel)); }
// GET: Flight/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } var flight = await _flightRepository.GetFlightWithObjectsAsync(id.Value); if (flight == null) { return(NotFound()); } CreateFlightViewModel model = new CreateFlightViewModel() { Id = flight.Id, Airplanes = _flightRepository.GetComboAirplanes(), Destinations = _flightRepository.GetComboDestinations(), Status = _flightRepository.GetComboStatus(), Tickets = _flightRepository.GetComboTickets(flight.Id), From = flight.From.Id, To = flight.To.Id, Departure = flight.Departure, Arrival = flight.Arrival, AirplaneId = flight.Airplane.Id, StatusId = flight.Status.Id, }; if (model.StatusId == 2 || model.StatusId == 3) // Voos terminados ou cancelados não podem ser editados { // Obter o state active var status = _context.Status.Where(x => x.Id == model.StatusId).FirstOrDefault(); ViewBag.message = $"Flight is {status.StatusName}! Can't be deleted"; return(View(model)); } ViewBag.minDate = DateTime.Now; ViewBag.format = "dd/MM/yyyy HH:mm"; return(View(model)); }
// GET: FlightsController/Edit/5 public ActionResult Edit(int id) { var query = client.Cypher .Match("(n:Airport)-[rel:FLIGHT_TO]->(m:Airport)") .Where((Flight rel) => rel.id == id) .Return((n, rel, m) => new { Od = n.As <Airport>(), Let = rel.As <Flight>(), Do = m.As <Airport>() }).Results.SingleOrDefault(); CreateFlightViewModel viewModel = new CreateFlightViewModel(); viewModel.Flight = query.Let; viewModel.AirportFromId = query.Od.id; viewModel.AirportToId = query.Do.id; viewModel.Airports.Add(query.Od); viewModel.Airports.Add(query.Do); viewModel.Disable = true; return(View("Create", viewModel)); }
public async Task <IActionResult> Create(CreateFlightViewModel model) { if (ModelState.IsValid) { var airplane = await _airplaneRepository.GetAirplaneWithUserAsync(model.AirplaneId); if (airplane == null) { return(NotFound()); } // Verificar a disponibilidade do avião ( É visto na tebela dos voos - Enviando o id do avião) bool isAvailable = _flightRepository.AirplaneIsAvailable(model.AirplaneId, model.Departure, model.Arrival); // Obter o state active var status = _context.Status.Where(x => x.StatusName == "Active").FirstOrDefault(); var to = await _destinationRepository.GetDestinationWithUserCityAndCoutryAsync(model.To); var from = await _destinationRepository.GetDestinationWithUserCityAndCoutryAsync(model.From); if (isAvailable) { Flight flight = new Flight() { From = from, To = to, Departure = model.Departure, Arrival = model.Arrival, Airplane = airplane, Status = status, Business = airplane.BusinessSeats, Economic = airplane.EconomySeats, }; try { await _flightRepository.CreateAsync(flight); return(RedirectToAction(nameof(Index))); } catch (Exception ex) { ModelState.AddModelError(string.Empty, ex.InnerException.Message); GetCombos(model); ViewBag.minDate = DateTime.Now; ViewBag.format = "dd/MM/yyyy HH:mm"; ViewBag.departure = model.Departure; ViewBag.arrival = model.Arrival; return(View(model)); } } GetCombos(model); ModelState.AddModelError(string.Empty, "Airplane isn't available. Choose another!"); return(View(model)); } GetCombos(model); ViewBag.minDate = DateTime.Now; ViewBag.format = "dd/MM/yyyy HH:mm"; return(View(model)); }
public async Task <IActionResult> Edit(CreateFlightViewModel model) { if (ModelState.IsValid) { // Saber se o estado mudou (só se pode alterar de activo para canceled) var newStatus = _context.Status.Where(x => x.Id == model.StatusId).FirstOrDefault(); if (newStatus == null) { return(NotFound()); } // Saber se o avião mudou var airplane = await _airplaneRepository.GetAirplaneWithUserAsync(model.AirplaneId); if (airplane == null) { return(NotFound()); } bool isAirplaneChange = airplane.Id == model.AirplaneId ? false : true; bool isAvailable = true; if (isAirplaneChange) // Se o avião mudou tenho que verificar a disponibilidade do novo avião { isAvailable = _flightRepository.AirplaneIsAvailable(model.AirplaneId, model.Departure, model.Arrival); } var to = await _destinationRepository.GetDestinationWithUserCityAndCoutryAsync(model.To); var from = await _destinationRepository.GetDestinationWithUserCityAndCoutryAsync(model.From); if (isAvailable) { Flight flight = new Flight() { Id = model.Id, From = from, To = to, Departure = model.Departure, Arrival = model.Arrival, Airplane = airplane, Status = newStatus, Business = airplane.BusinessSeats, Economic = airplane.EconomySeats, }; try { await _flightRepository.UpDateAsync(flight); List <Ticket> ticketList = _flightRepository.GetTickets(flight.Id); // Depois de Fazer o update, enviar um email para todos os utilizadores com bilhetes, com os novos dados if (ticketList.Count != 0) { if (flight.Status.StatusName == "Active") { foreach (var item in ticketList) { _mailHelper.SendMail(item.User.Email, "Flight changes", $"<h1>Flight changes</h1></br></br>" + $"Please consider the new flight details:</br>" + $"From: {item.Flight.From.City.Name} </br>" + $"To: {item.Flight.To.City.Name} </br>" + $"Departure: {item.Flight.Departure} </br>" + $"Arrival: {item.Flight.Arrival} </br>" + "Thank you for your attention"); } } else if (flight.Status.StatusName == "Canceled") { foreach (var item in ticketList) { _mailHelper.SendMail(item.User.Email, "Flight canceled", $"<h1>Flight canceled</h1></br></br>" + $"Your flight:</br>" + $"From: {item.Flight.From.City.Name} </br>" + $"To: {item.Flight.To.City.Name} </br>" + $"Was canceled! Please, contact our customer service)"); } } } return(RedirectToAction(nameof(Index))); } catch (Exception ex) { ModelState.AddModelError(string.Empty, ex.InnerException.Message); GetCombos(model); ViewBag.minDate = DateTime.Now; ViewBag.format = "dd/MM/yyyy HH:mm"; return(View(model)); } } ViewBag.minDate = DateTime.Now; ViewBag.format = "dd/MM/yyyy HH:mm"; GetCombos(model); ModelState.AddModelError(string.Empty, "Airplane isn't available. Choose another!"); return(View(model)); } GetCombos(model); ViewBag.minDate = DateTime.Now; ViewBag.format = "dd/MM/yyyy HH:mm"; return(View(model)); }
public void GetCombos(CreateFlightViewModel model) { model.Airplanes = _flightRepository.GetComboAirplanes(); model.Destinations = _flightRepository.GetComboDestinations(); model.Status = _flightRepository.GetComboStatus(); }
public IActionResult Create(CreateFlightViewModel model) { var d = string.Empty; if (model.Departure.Contains("pm")) { var s = model.Departure.Split(' '); d = s[0] + " " + (s[1].Split(':')[0] == "12" ? "0" : (int.Parse(s[1].Split(':')[0]) + 12).ToString()) + ":" + s[1].Split(":")[1]; } else { var s = model.Departure.Split(' '); d = s[0] + " " + string.Format("{0:D2}", int.Parse(s[1].Split(':')[0])) + ":" + s[1].Split(':')[1]; } var a = string.Empty; if (model.Arrival.Contains("pm")) { var s = model.Arrival.Split(' '); a = s[0] + " " + (s[1].Split(':')[0] == "12" ? "0" : (int.Parse(s[1].Split(':')[0]) + 12).ToString()) + ":" + s[1].Split(":")[1]; } else { var s = model.Arrival.Split(' '); a = s[0] + " " + string.Format("{0:D2}", int.Parse(s[1].Split(':')[0])) + ":" + s[1].Split(':')[1]; } var Departure = DateTime.ParseExact(d, "MM/dd/yyyy HH:mm", null); var Arrival = DateTime.ParseExact(a, "MM/dd/yyyy HH:mm", null); var airports = this.db.Airports.Where(x => x.Name == model.Origin || x.Name == model.Destination).ToList(); var flight = new Flight { Aircraft = this.db.Aircrafts.Where(x => x.Name == model.Aircraft).FirstOrDefault(), AircraftId = this.db.Aircrafts.Where(x => x.Name == model.Aircraft).Select(x => x.Id).FirstOrDefault(), DurationInMinutes = int.Parse(model.DurationInMinutes), Price = decimal.Parse(model.Price), Departure = Departure, Arrival = Arrival, FlightNumber = model.FlightNumber, Airports = new List <AirportFlight> { new AirportFlight { Airport = airports[0], AirportId = airports[0].Id, Type = AirportType.Origin }, new AirportFlight { Airport = airports[1], AirportId = airports[1].Id, Type = AirportType.Destination } } }; this.db.Flights.Add(flight); this.db.SaveChanges(); var flightId = flight.Id; var flightTemp = flight; for (int i = 0; i < flight.Airports.Count(); i++) { flight.Airports.ToList()[i].FlightId = flightId; flight.Airports.ToList()[i].Flight = flightTemp; } this.db.SaveChanges(); return(this.Redirect("/")); }
public ActionResult Save(CreateFlightViewModel model) { int flightId = model.Flight.id; bool disable = model.Disable; int airportFrom = model.AirportFromId; int airportTo = model.AirportToId; string departureDate = model.Flight.DepartureDate; string departureTime = model.Flight.DepartureTime; string arrivalDate = model.Flight.ArrivalDate; string arrivalTime = model.Flight.ArrivalTime; int seatsAvailable = model.Flight.SeatsAvailable; int ticketPrice = model.Flight.TicketPrice; Dictionary <string, object> queryDict = new Dictionary <string, object>(); queryDict.Add("airportFrom", airportFrom); queryDict.Add("airportTo", airportTo); queryDict.Add("departureDate", departureDate); queryDict.Add("departureTime", departureTime); queryDict.Add("arrivalDate", arrivalDate); queryDict.Add("arrivalTime", arrivalTime); queryDict.Add("seatsAvailable", seatsAvailable); queryDict.Add("ticketPrice", ticketPrice); queryDict.Add("flightId", flightId); var queryMax = new Neo4jClient.Cypher.CypherQuery("MATCH ()-[n:FLIGHT_TO]->() RETURN max(n.id)", queryDict, CypherResultMode.Set); String maxIdObj = ((IRawGraphClient)client).ExecuteGetCypherResults <String>(queryMax).SingleOrDefault(); int maxId; if (maxIdObj == null) { maxId = 0; } else { maxId = Int32.Parse(maxIdObj); } var queryFrom = new Neo4jClient.Cypher.CypherQuery("MATCH (n:Airport) WHERE n.id = {airportFrom} RETURN n", queryDict, CypherResultMode.Set); Airport apFrom = ((IRawGraphClient)client).ExecuteGetCypherResults <Airport>(queryFrom).SingleOrDefault(); var queryTo = new Neo4jClient.Cypher.CypherQuery("MATCH (n:Airport) WHERE n.id = {airportTo} RETURN n", queryDict, CypherResultMode.Set); Airport apTo = ((IRawGraphClient)client).ExecuteGetCypherResults <Airport>(queryTo).SingleOrDefault(); model.Flight.From = apFrom; model.Flight.To = apTo; QueryFlightsViewModel viewModel = new QueryFlightsViewModel(); var createQuery = new Neo4jClient.Cypher.CypherQuery("", queryDict, CypherResultMode.Set); if (disable == false) { createQuery = new Neo4jClient.Cypher.CypherQuery("MATCH (n:Airport), (m:Airport) WHERE " + "n.id = {airportFrom} AND m.id = {airportTo} " + "CREATE (n)-[rel:FLIGHT_TO {id: " + ++maxId + " , DepartureDate: '" + departureDate + "', DepartureTime: '" + departureTime + "', ArrivalDate: '" + arrivalDate + "', ArrivalTime: '" + arrivalTime + "', SeatsAvailable: " + seatsAvailable + ", TicketPrice: " + ticketPrice + "}]->(m) RETURN rel", queryDict, CypherResultMode.Set); } else { createQuery = new Neo4jClient.Cypher.CypherQuery("MATCH (n:Airport)-[rel:FLIGHT_TO]->(m:Airport) WHERE " + "rel.id = {flightId} " + "SET rel.DepartureDate = \"" + departureDate + "\", rel.DepartureTime = \"" + departureTime + "\", rel.ArrivalDate = \"" + arrivalDate + "\", rel.ArrivalTime = \"" + arrivalTime + "\", rel.SeatsAvailable = " + seatsAvailable + ", rel.TicketPrice = " + ticketPrice + " RETURN rel", queryDict, CypherResultMode.Set); } List <Flight> create = ((IRawGraphClient)client).ExecuteGetCypherResults <Flight>(createQuery).ToList(); var query1 = client.Cypher .Match("(n:Airport)-[rel:FLIGHT_TO]->(m:Airport)") .Return((n, rel, m) => new { Od = n.As <Airport>(), Let = rel.As <Flight>(), Do = m.As <Airport>() }).Results.ToList(); var flights = new List <Flight>(query1.Count); foreach (var item in query1) { Flight f = item.Let; f.From = item.Od; f.To = item.Do; flights.Add(f); } viewModel.FlightsList = flights; return(RedirectToAction("Admin")); //return RedirectToAction("Admin", "Flights", new { viewModel }); }