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; } }
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)); }
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); }