[Authorize] // POde ser camado do booking ou do boobking return public async Task <IActionResult> TicketNew() { // Agarrar o modelo var data = TempData.Get <ChooseSeatFlightModel>("BookingRetun"); if (data == null) { return(NotFound()); } NewTicketModel model = new NewTicketModel(); string email = this.User.Identity.Name; User user = await _userHelper.GetUserByEmailAsync(email); Flight flight = await _flightRepository.GetFlightWithObjectsAsync(data.FlightId); Destination From = await _destinationRepository.GetDestinationWithUserCityAndCoutryAsync(flight.From.Id); Destination To = await _destinationRepository.GetDestinationWithUserCityAndCoutryAsync(flight.To.Id); model.FullName = user.FullName; model.UserEmail = user.Email; //======== Bilhete de Ida ========// model.FlightId = flight.Id; model.From = From.City.Name; model.To = To.City.Name; model.Date = flight.Departure.ToShortDateString(); model.Time = flight.Departure.ToShortTimeString(); model.Seat = data.Seat.ToString(); if (data.Class == 1) { model.ClassName = "Economic"; } else if (data.Class == 2) { model.ClassName = "Business"; } if (data.isRoundTrip == 1) // Ida e Volta { Flight flightReturn = await _flightRepository.GetFlightWithObjectsAsync(data.FlightIdReturn); //======== Bilhete de Volta ========// model.FlightIdReturn = flightReturn.Id; model.FromReturn = To.City.Name; model.ToReturn = From.City.Name; model.DateReturn = flightReturn.Departure.ToShortDateString(); model.TimeReturn = flightReturn.Departure.ToShortTimeString(); model.SeatReturn = data.SeatReturn.ToString(); if (data.ClassReturn == 1) { model.ClassNameReturn = "Economic"; } else if (data.ClassReturn == 2) { model.ClassNameReturn = "Business"; } } return(View(model)); }
public async Task <IActionResult> TicketNew(NewTicketModel model) { // É aqui que vou inserir os bilhetes na base de dados User user = await _userHelper.GetUserByEmailAsync(model.UserEmail); // ===================== Bilhete de Ida ===========================// Ticket ticket = new Ticket(); Flight flight = _flightRepository.GetFlight(model.FlightId); ticket.Seat = Convert.ToInt32(model.Seat); ticket.User = user; ticket.Flight = flight; ticket.Class = model.ClassName; if (model.FlightIdReturn != 0) { // ===================== Bilhete de Regresso ===========================// Ticket ticketReturn = new Ticket(); Flight flightReturn = _flightRepository.GetFlight(model.FlightIdReturn); ticket.Seat = Convert.ToInt32(model.SeatReturn); ticketReturn.User = user; ticketReturn.Flight = flightReturn; ticketReturn.Class = model.ClassNameReturn; try { await _ticketRepository.CreateAsync(ticket); // Grava Bilhete de Ida await _ticketRepository.CreateAsync(ticketReturn); // Grava Bilhete de Regresso _mailHelper.SendMail(user.Email, "Ticket", $"<h1>Ticket Confirmation</h1>" + $"Your ticket information, " + $"Flight: {ticket.Flight.Id}, " + $"Class: {ticket.Class}, " + $"Date: {ticket.Seat}, " + $"Thanks for flying with us!"); _mailHelper.SendMail(user.Email, "Return Ticket", $"<h1>Ticket Confirmation</h1>" + $"Your ticket information, " + $"Flight: {ticketReturn.Flight.Id}, " + $"Class: {ticketReturn.Class}, " + $"Date: {ticketReturn.Seat}, " + $"Thanks for flying with us!"); ViewBag.Message = "Your tickets information was sent to your email!"; return(View()); } catch (Exception ex) { ModelState.AddModelError(string.Empty, ex.InnerException.Message); return(View(model)); } } else { try { await _ticketRepository.CreateAsync(ticket);// Ao usar o create grava logo _mailHelper.SendMail(user.Email, "Ticket", $"<h1>Ticket Confirmation</h1>" + $"Your ticket information, " + $"Flight: {ticket.Flight.Id}, " + $"Class: {ticket.Class}, " + $"Date: {ticket.Seat}, " + $"Thanks for flying with us!"); ViewBag.Message = "Your ticket information was sent to your email!"; return(View()); } catch (Exception ex) { ModelState.AddModelError(string.Empty, ex.InnerException.Message); return(View(model)); } } }
public ActionResult CreateTicket(NewTicketModel model) { if (ModelState.IsValid) { var now = DateTime.Now; var userId = User.Identity.GetUserId(); Project parentProject = db.Projects.FirstOrDefault(p => p.Id == model.ParentProjectId); if (parentProject == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } TicketStatus initStatus; if (model.TicketStatusId == null && parentProject.ActiveWorkflow.InitialTicketStatusId != null) { initStatus = db.TicketStatuses.ToList().FirstOrDefault(ts => ts.Id == parentProject.ActiveWorkflow.InitialTicketStatusId); if (initStatus == null) { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError)); } } else { initStatus = db.TicketStatuses.Find(model.TicketStatusId); } TicketPriority priority = db.TicketPriorityTypes.FirstOrDefault(tp => tp.Id == model.TicketPriorityId); if (priority == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } string initSolverId = parentProject.GetNextSolverIdFromWorkflow(); var newTicket = new Ticket() { Title = model.Title , Description = model.Description , CreatedAt = now , ParentProjectId = parentProject.Id , TicketTypeId = model.TicketTypeId , TicketStatusId = initStatus.Id , TicketPriorityLevelId = priority.Id , ReporterId = User.Identity.GetUserId() , AssignedSolverId = initSolverId }; db.Tickets.Add(newTicket); db.SaveChanges(); newTicket.SaveTicketCreatedHistoryEntry(User, db); if (model.Attachments.First() != null) { newTicket.AddAttachments(model.Attachments, User, db, Server); } db.TicketNotifications.AddRange(TicketNotification.GenerateNotifications(db, User.Identity.GetUserId(), newTicket.Id, "A new ticket has been created!")); db.SaveChanges(); return(RedirectToAction("Show", "Tickets", new { TicketIdentifier = newTicket.GetTicketIdentifier() })); } return(View()); }