Beispiel #1
0
        [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));
        }
Beispiel #2
0
        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));
                }
            }
        }
Beispiel #3
0
        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());
        }