Beispiel #1
0
        public void CreateNewTickets(ref List <TicketVM> tickets, InformAboutPassengers personsInf)
        {
            CarriageType    carrType         = carrServ.GetCarrTypyById(carrServ.GetCarrTypeIdByCarrType(tickets[0].CarriageType));
            Carriage        carr             = carrServ.GetCarrByTypeOrderAndTrain(carrType.ID, tickets[0].CarriageOrder, tickets[0].TrainNumber);
            StationOnRoute  startStatOnRoute = statOnRouteServ.GetByTrainNumbAndStation(tickets[0].TrainNumber, tickets[0].StartStation);
            StationOnRoute  endStatOnRoute   = statOnRouteServ.GetByTrainNumbAndStation(tickets[0].TrainNumber, tickets[0].EndStation);
            ReservationSeat seat;
            Person          person;
            bool            haveTea = false;
            bool            haveBed = false;

            for (int i = 0; i < tickets.Count(); i++)
            {
                int maxIdInResrvSeat = seatServ.GetMaxId();
                seat = new ReservationSeat()
                {
                    ID = maxIdInResrvSeat + 1, Number = tickets[i].SeatNumber, CarriageID = carr.ID, IsDeleted = false
                };
                seatServ.Create(seat);
                if (!personServ.PersonExist(tickets[i].FirstName, tickets[i].LastName, tickets[i].BirthDate, tickets[i].PersonType))
                {
                    int maxIdInPerson = personServ.GetMaxId();
                    int personTypeId  = personServ.GetPersonTypeIdByType(tickets[i].PersonType);
                    person = new Person()
                    {
                        ID = maxIdInPerson + 1, FirstName = tickets[i].FirstName, LastName = tickets[i].LastName, BirthDate = tickets[i].BirthDate, Email = personsInf.Email[i], Phone = personsInf.Phone[i], PersonTypeID = personTypeId, IsDeleted = false
                    };
                    personServ.Create(person);
                }
                else
                {
                    person = personServ.GetPersonByFLNameBirthType(tickets[i].FirstName, tickets[i].LastName, tickets[i].BirthDate, tickets[i].PersonType);
                }
                int    maxIdInTicket = ticketServ.GetMaxId();
                Ticket ticket        = new Ticket()
                {
                    ID = maxIdInTicket + 1, PersonID = person.ID, DepartureDateTime = tickets[i].DepartureDateTime, ArrivalDateTime = tickets[i].ArrivalDateTime, ReservationSeatID = seat.ID, StationOnRouteStartID = startStatOnRoute.ID, StationOnRouteEndID = endStatOnRoute.ID, IsDeleted = false
                };
                ticketServ.Create(ticket);
                if (tickets[i].HaveTea)
                {
                    haveTea = true;
                }
                if (tickets[i].HaveBed)
                {
                    haveBed = true;
                }
                tickets[i].Price = sqlProcService.GetTicketPrice(ticket.ID, haveTea, haveBed);
                ticketServ.AddPriceForTicket(ticket.ID, tickets[i].Price);
                haveTea = false;
                haveBed = false;
            }
        }
Beispiel #2
0
        public ActionResult GetTickets(ForCreateForms param, InformAboutPassengers personsInf, int[] HaveBed, int[] HaveTea)
        {
            int             countTickets = personsInf.FirstName.Count();
            string          startStation = statServ.GetFirstStationOnRoute(param.TrainNumber);
            List <TicketVM> tickets      = new List <TicketVM>();

            for (int i = 0; i < countTickets; i++)
            {
                TicketVM ticket = new TicketVM();
                ticket.TrainNumber       = param.TrainNumber;
                ticket.CarriageType      = carrServ.GetCarrTypeByCarrOrderInTrain(param.TrainNumber, param.CarriageOrder);
                ticket.CarriageOrder     = param.CarriageOrder;
                ticket.SeatNumber        = personsInf.SeatNumber[i];
                ticket.StartStation      = param.BeginInputStation;
                ticket.EndStation        = param.EndInputStation;
                ticket.DepartureDateTime = sqlServ.GetDepartArrivlDateTime(param.DepartDateTime, param.TrainNumber, startStation, param.BeginInputStation);
                ticket.ArrivalDateTime   = sqlServ.GetDepartArrivlDateTime(param.DepartDateTime, param.TrainNumber, startStation, param.EndInputStation);
                ticket.FirstName         = personsInf.FirstName[i];
                ticket.LastName          = personsInf.LastName[i];
                ticket.BirthDate         = personsInf.BirthDate[i];
                ticket.PersonType        = personsInf.PersonType[i];
                if (HaveTea != null && HaveTea.Count() != 0 && HaveTea.Contains(personsInf.SeatNumber[i]))
                {
                    ticket.HaveTea = true;
                }
                if (HaveBed != null && HaveBed.Count() != 0 && HaveBed.Contains(personsInf.SeatNumber[i]))
                {
                    ticket.HaveBed = true;
                }
                tickets.Add(ticket);
            }

            mapper.CreateNewTickets(ref tickets, personsInf);

            List <string> filesPaths = WorkWithPDFAndEmail.CreatePdfFileAndSendEmail(tickets, personsInf);

            string ticketsPDFfilePath = WorkWithPDFAndEmail.MergePDFFiles(filesPaths);
            int    idx = ticketsPDFfilePath.LastIndexOf('\\');

            FilePdfTickets file = new FilePdfTickets(ticketsPDFfilePath.Substring(0, idx), ticketsPDFfilePath.Substring(idx + 1));

            return(View("GetTickets", file));
        }
Beispiel #3
0
        public static List <string> CreatePdfFileAndSendEmail(List <TicketVM> tickets, InformAboutPassengers personsInf)
        {
            List <string> filesPaths = new List <string>();

            for (int i = 0; i < tickets.Count(); i++)
            {
                using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream())
                {
                    Document document = new Document(PageSize.A4, 10, 10, 70, 10);

                    PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);
                    document.Open();

                    string    text      = "Landing document";
                    Paragraph paragraph = new Paragraph();
                    paragraph.SpacingBefore = 10;
                    paragraph.SpacingAfter  = 10;
                    paragraph.Alignment     = Element.ALIGN_CENTER;
                    paragraph.Font          = FontFactory.GetFont(FontFactory.HELVETICA, 18f, BaseColor.BLACK);
                    paragraph.Add(text);
                    document.Add(paragraph);

                    PdfPTable table = new PdfPTable(4);

                    PdfPCell cell = new PdfPCell(new Phrase());

                    table.AddCell("First name and last name");
                    table.AddCell(tickets[i].FirstName + " " + tickets[i].LastName);
                    table.AddCell("Train number");
                    table.AddCell(Convert.ToString(tickets[i].TrainNumber));

                    table.AddCell("Departure station");
                    table.AddCell(tickets[i].StartStation);
                    table.AddCell("Carriage order");
                    table.AddCell(tickets[i].CarriageType + " " + tickets[i].CarriageOrder);

                    table.AddCell("Arrival station");
                    table.AddCell(tickets[i].EndStation);
                    table.AddCell("Seat number");
                    table.AddCell(tickets[i].SeatNumber + " " + tickets[i].PersonType);

                    table.AddCell("Departure date time");
                    table.AddCell(tickets[i].DepartureDateTime.ToString("dd.MM.yyyy HH:mm"));
                    cell         = new PdfPCell(new Phrase("Service"));
                    cell.Rowspan = 2;
                    table.AddCell(cell);
                    if (tickets[i].HaveTea)
                    {
                        cell = new PdfPCell(new Phrase("One tea"));
                    }
                    else
                    {
                        cell = new PdfPCell(new Phrase("No tea"));
                    }
                    table.AddCell(cell);
                    table.AddCell("Arrival date time");
                    table.AddCell(tickets[i].ArrivalDateTime.ToString("dd.MM.yyyy HH:mm"));
                    if (tickets[i].HaveBed)
                    {
                        cell = new PdfPCell(new Phrase("Bed"));
                    }
                    else
                    {
                        cell = new PdfPCell(new Phrase("No bed"));
                    }
                    table.AddCell(cell);

                    cell         = new PdfPCell(new Phrase("Price"));
                    cell.Colspan = 2;
                    table.AddCell(cell);
                    cell         = new PdfPCell(new Phrase(Convert.ToString(tickets[i].Price)));
                    cell.Colspan = 2;
                    table.AddCell(cell);

                    document.Add(table);

                    document.Close();

                    byte[] bytes    = memoryStream.ToArray();
                    string fileName = tickets[i].FirstName + "_" + tickets[i].LastName + "_" + tickets[i].StartStation + "_" + tickets[i].EndStation + "_" + personsInf.BirthDate[i].ToString("dd-MM-yyyy_HH.mm.ss") + "_" + tickets[i].DepartureDateTime.ToString("dd-MM-yyyy_HH.mm.ss") + ".pdf";
                    File.WriteAllBytes(@"D:\Virtuace\HW6\Booking\Booking\Tickets\" + fileName, bytes);
                    filesPaths.Add(@"D:\Virtuace\HW6\Booking\Booking\Tickets\" + fileName);

                    TransferTicketsEmail(fileName, personsInf.Email[i], tickets[i].DepartureDateTime, tickets[i].StartStation, tickets[i].EndStation);
                }
            }

            return(filesPaths);
        }