public ActionResult Create(Project project) { if (ModelState.IsValid) { using (ApplicationDbContext context = new ApplicationDbContext()) { var user = UserManager.FindById(User.Identity.GetUserId()); if (context.Projects.Where(p => p.OwnerID == user.OrgID && p.Name == project.Name.Trim() && p.Starts == project.Starts && p.Ends == project.Ends).Any()) { ModelState.AddModelError("", ProjectResources.AlreadyExistingProjectError); } else { project.OwnerID = user.OrgID; var rootFolder = new Folder(); rootFolder.Name = project.Name.Trim(); context.Folders.Add(rootFolder); TicketSetting ticketSetting = new TicketSetting(); ticketSetting.MaxTicketsPerEmail = 8; project.TicketSetting = ticketSetting; context.SaveChanges(); project.RootFolder = rootFolder; context.Projects.Add(project); context.SaveChanges(); var messageModel = new MessageViewModel(); messageModel.RedirectAction = "Home"; messageModel.Redirection = true; messageModel.RedirectController = "Org"; messageModel.RedirectionButtonText = GeneralResources.Ok; messageModel.Header = ProjectResources.ProjectCreated; messageModel.Body = ProjectResources.ProjectCreatedBody; return(RedirectToAction("Message", "Home", messageModel)); } } } return(View(project)); }
public void Seed(ApplicationDbContext _context) { this.context = _context; try { var org1 = new Org() { Name = "SDBS", VariableSymbolCounter = 1 }; context.Orgs.AddOrUpdate(org1); var passwordHash = new PasswordHasher(); string password = passwordHash.HashPassword("testtest"); var user1 = new ApplicationUser { Email = "*****@*****.**", OrgID = org1.OrgID, EmailConfirmed = true, UserName = "******", PasswordHash = password, SecurityStamp = Guid.NewGuid().ToString() }; context.Users.AddOrUpdate(user1); string password2 = passwordHash.HashPassword("testtest"); var user2 = new ApplicationUser { Email = "robin@localhost:44301", OrgID = org1.OrgID, EmailConfirmed = true, UserName = "******", PasswordHash = password2, SecurityStamp = Guid.NewGuid().ToString() }; context.Users.AddOrUpdate(user2); string password3 = passwordHash.HashPassword("testtest"); var user3 = new ApplicationUser { Email = "freeze@localhost:44301", OrgID = org1.OrgID, EmailConfirmed = true, UserName = "******", PasswordHash = password3, SecurityStamp = Guid.NewGuid().ToString() }; context.Users.AddOrUpdate(user3); var rootFolder1 = new Folder() { Name = "Psy High15" }; context.Folders.AddOrUpdate(rootFolder1); var ticketsSettings = new TicketSetting() { LocationCZ = "Praha 5", LocationEN = "Prague 5", MaxTicketsPerEmail = 8, NamedTickets = false, ProjectViewNameCZ = "Fesťák", ProjectViewNameEN = "The Festival", StartsCZ = "20.listopad", StartsEN = "5th July" }; context.TicketsSettings.AddOrUpdate(ticketsSettings); var project = new Project() { RootFolder = rootFolder1, Name = "Psy High15", Starts = DateTime.Now.AddDays(-90), Ends = DateTime.Now.AddDays(20), Owner = org1, TicketSetting = ticketsSettings }; context.Projects.AddOrUpdate(project); List <Task> tasks = new List <Task>(); var task1 = new Task() { Creator = user1, Org = org1, Deadline = DateTime.Now.AddDays(5), Name = "Prodlužky", Parent = rootFolder1, Content = "<h1>Úkol pro prodlužovací kabely</h1> </br> <p> Toto je hlavní úkol pro prodlužky </p>" }; var task2 = new Task() { Creator = user1, Org = org1, Deadline = DateTime.Now.AddDays(6), Name = "Nářadí", Parent = rootFolder1, Content = "<h1>Úkol pro stavební vybavení</h1> </br> <p> Toto je hlavní úkol pro nářadí </p>" }; var task3 = new Task() { Creator = user1, Org = org1, Deadline = DateTime.Now.AddDays(7), Name = "Světla", Parent = rootFolder1, Content = "<h1>Úkol pro světelnou techniku</h1> </br> <p> Toto je hlavní úkol pro světla </p>" }; context.Tasks.AddOrUpdate(task1); context.Tasks.AddOrUpdate(task2); context.Tasks.AddOrUpdate(task3); tasks.Add(task1); tasks.Add(task2); tasks.Add(task3); //Random rnd = new Random(); //DateTime startDateTime = DateTime.Now.AddDays(-80); //for (int i = 0; i < 100; i++) //{ // startDateTime = startDateTime.AddHours(1); // CreateTaskComments(user1, tasks[i % 3], rnd.Next(2, 10), startDateTime); // startDateTime = startDateTime.AddHours(1); // CreateTaskComments(user2, tasks[i % 3], rnd.Next(2, 10), startDateTime); // startDateTime = startDateTime.AddHours(1); // CreateTaskComments(user3, tasks[i % 3], rnd.Next(2, 10), startDateTime); //} var folder2 = new Folder() { Name = "Stavby", Parent = rootFolder1 }; context.Folders.AddOrUpdate(folder2); var task4 = new Task() { Creator = user2, Org = org1, Deadline = DateTime.Now.AddDays(5), Name = "Bar", Parent = folder2 }; var task5 = new Task() { Creator = user3, Org = org1, Deadline = DateTime.Now.AddDays(6), Name = "Stage", Parent = folder2 }; var task6 = new Task() { Creator = user3, Org = org1, Deadline = DateTime.Now.AddDays(7), Name = "Přednášky", Parent = folder2 }; context.Tasks.AddOrUpdate(task4); context.Tasks.AddOrUpdate(task5); context.Tasks.AddOrUpdate(task6); TicketCategory ticketCategory1 = new TicketCategory() { Capacity = 100, Price = 110, Project = project, SoldFrom = new DateTime(2015, 10, 1), SoldTo = new DateTime(2015, 12, 31), HeaderCZ = "Stání", HeaderEN = "Sitting" }; TicketCategory ticketCategory2 = new TicketCategory() { Capacity = 200, Price = 220, Project = project, SoldFrom = new DateTime(2015, 10, 1), SoldTo = new DateTime(2015, 12, 31), HeaderCZ = "VIP sezení", HeaderEN = "VIP sitting" }; context.TicketCategories.AddOrUpdate(ticketCategory1); context.TicketCategories.AddOrUpdate(ticketCategory2); ////Order:1 //TicketOrder ticketOrder1 = new TicketOrder() { Created = new DateTime(2015, 10, 1), Email = "customer1@localhost:44301", Paid = new DateTime(2015, 10, 2), TotalPrice = 66.60, VariableSymbol = 666777, OrgID = org1.OrgID }; //context.TicketOrders.AddOrUpdate(ticketOrder1); ////Order:1, Category:1 //TicketCategoryOrder ticketCategoryOrder1 = new TicketCategoryOrder() { Count = 2, Paid = true, TicketCategory = ticketCategory1, TicketOrder = ticketOrder1 }; //context.TicketCategoryOrders.AddOrUpdate(ticketCategoryOrder1); //////Order:1, Category:1, TicketItems ////TicketItem ticketItem111 = new TicketItem() { TicketCategoryOrder = ticketCategoryOrder1, Code = "ticketItem111" }; ////TicketItem ticketItem112 = new TicketItem() { TicketCategoryOrder = ticketCategoryOrder1, Code = "ticketItem112" }; ////context.TicketItems.AddOrUpdate(ticketItem111); ////context.TicketItems.AddOrUpdate(ticketItem112); ////Order:1, Category:2 //TicketCategoryOrder ticketCategoryOrder2 = new TicketCategoryOrder() { Count = 1, Paid = true, TicketCategory = ticketCategory2, TicketOrder = ticketOrder1 }; //context.TicketCategoryOrders.AddOrUpdate(ticketCategoryOrder2); //////Order:1, Category:1, TicketItems ////TicketItem ticketItem121 = new TicketItem() { TicketCategoryOrder = ticketCategoryOrder2, Code = "ticketItem121" }; ////context.TicketItems.AddOrUpdate(ticketItem121); ////Order:2 //TicketOrder ticketOrder2 = new TicketOrder() { Created = new DateTime(2015, 10, 5), Email = "customer2@localhost:44301", Paid = new DateTime(2015, 10, 6), TotalPrice = 42.00, VariableSymbol = 420420, OrgID = org1.OrgID }; //context.TicketOrders.AddOrUpdate(ticketOrder2); ////Order:2, Category:1 //TicketCategoryOrder ticketCategoryOrder3 = new TicketCategoryOrder() { Count = 2, Paid = true, TicketCategory = ticketCategory1, TicketOrder = ticketOrder2 }; //context.TicketCategoryOrders.AddOrUpdate(ticketCategoryOrder3); //////Order:2, Category:1, TicketItems ////TicketItem ticketItem211 = new TicketItem() { TicketCategoryOrder = ticketCategoryOrder3, Code = "ticketItem211" }; ////TicketItem ticketItem212 = new TicketItem() { TicketCategoryOrder = ticketCategoryOrder3, Code = "ticketItem212" }; ////context.TicketItems.AddOrUpdate(ticketItem211); ////context.TicketItems.AddOrUpdate(ticketItem212); ////Order:2, Category:2 //TicketCategoryOrder ticketCategoryOrder4 = new TicketCategoryOrder() { Count = 1, Paid = true, TicketCategory = ticketCategory2, TicketOrder = ticketOrder2 }; //context.TicketCategoryOrders.AddOrUpdate(ticketCategoryOrder4); //////Order:2, Category:1, TicketItems ////TicketItem ticketItem221 = new TicketItem() { TicketCategoryOrder = ticketCategoryOrder4, Code = "ticketItem221" }; ////context.TicketItems.AddOrUpdate(ticketItem221); FioBankProxy fioBankProxy = new FioBankProxy() { AccountNumber = 2200908004, Token = "kuNbfeSqViKWPhAn4wW1WzXvnOpKhJYWoxDxtrLYwA97baSuQlJygxBIQg0bjk59", LastUpdate = DateTime.Now }; context.FioBankProxies.AddOrUpdate(fioBankProxy); BankProxy bankProxy = new BankProxy() { BankProxyType = EBankProxyType.FIO, FioBankProxy = fioBankProxy }; context.BankProxies.AddOrUpdate(bankProxy); project.BankProxy = bankProxy; project.TicketsURL = "http://*****:*****@gmail.com", OrgID = org2.OrgID, EmailConfirmed = true, UserName = "******", PasswordHash = password4, SecurityStamp = Guid.NewGuid().ToString() }; context.Users.AddOrUpdate(user4); var rootFolder2 = new Folder() { Name = "Psy High2" }; context.Folders.AddOrUpdate(rootFolder2); var project2 = new Project() { RootFolder = rootFolder2, Name = "Psy High2", Starts = DateTime.Now.AddDays(-90), Ends = DateTime.Now.AddDays(20), Owner = org2 }; context.Projects.AddOrUpdate(project2); TicketCategory ticketCategory3 = new TicketCategory() { Capacity = 100, Price = 110, Project = project2, SoldFrom = new DateTime(2015, 10, 1), SoldTo = new DateTime(2015, 12, 31), HeaderCZ = "Stání", HeaderEN = "Sitting" }; TicketCategory ticketCategory4 = new TicketCategory() { Capacity = 200, Price = 220, Project = project2, SoldFrom = new DateTime(2015, 10, 1), SoldTo = new DateTime(2015, 12, 31), HeaderCZ = "VIP sezení", HeaderEN = "VIP sitting" }; context.TicketCategories.AddOrUpdate(ticketCategory3); context.TicketCategories.AddOrUpdate(ticketCategory4); ////Order:2 //TicketOrder ticketOrder3 = new TicketOrder() { Created = new DateTime(2015, 10, 5), Email = "customer2@localhost:44301", Paid = new DateTime(2015, 10, 6), TotalPrice = 42.00, VariableSymbol = 420420, OrgID = org2.OrgID }; //context.TicketOrders.AddOrUpdate(ticketOrder3); ////Order:2, Category:1 //TicketCategoryOrder ticketCategoryOrder5 = new TicketCategoryOrder() { Count = 2, Paid = true, TicketCategory = ticketCategory3, TicketOrder = ticketOrder3 }; //context.TicketCategoryOrders.AddOrUpdate(ticketCategoryOrder5); FioBankProxy fioBankProxy2 = new FioBankProxy() { AccountNumber = 2200908004, Token = "kuNbfeSqViKWPhAn4wW1WzXvnOpKhJYWoxDxtrLYwA97baSuQlJygxBIQg0bjk59", LastUpdate = DateTime.Now }; context.FioBankProxies.AddOrUpdate(fioBankProxy2); BankProxy bankProxy2 = new BankProxy() { BankProxyType = EBankProxyType.FIO, FioBankProxy = fioBankProxy2 }; context.BankProxies.AddOrUpdate(bankProxy2); project2.BankProxy = bankProxy2; project2.TicketsURL = "http://localhost:44301/vstupenky/2/Psy-High2"; //ticketCategory1.Ordered = 4; //ticketCategory2.Ordered = 2; //org1.VariableSymbolCounter = 2; context.SaveChanges(); } catch (Exception e) { System.Diagnostics.Debug.WriteLine("_____Pruser"); Console.WriteLine("_____Pruser"); Console.WriteLine(e.Message); throw; } }
public GetMaydayTicketService(string starturl, TicketSetting setting) { this._startUrl = starturl; this._setting = setting; }
public MvcMailMessage SendTicketOrderConfirmation(Models.TicketsViewModel.TicketItemConfirmationViewModel model, List <TicketPDFGenerator.TicketToGenerateWrapper> ticketsToExport, TicketSetting settings) { ViewData = new ViewDataDictionary(model); TicketPDFGenerator.GetPDFTicket(ticketsToExport, settings); string subject = "Vstupenky: " + model.ProjectName; var emailMsg = Populate(x => { x.Subject = subject; x.ViewName = "TicketOrderConfirmation"; x.To.Add(model.Email); foreach (var ticketToExport in ticketsToExport) { MemoryStream memoryStream = new MemoryStream(ticketToExport.PDFTicket); Attachment attachement = new Attachment(memoryStream, System.Net.Mime.MediaTypeNames.Application.Pdf); attachement.ContentDisposition.FileName = string.Format("{0} | Vstupenka: {1}.pdf", ticketToExport.ProjectName, ticketToExport.Code); x.Attachments.Add(attachement); } }); return(emailMsg); }
public static void GetPDFTicket(List <TicketToGenerateWrapper> ticketsToExport, TicketSetting settings) { foreach (var ticketToExport in ticketsToExport) { using (MemoryStream memoryStream = new MemoryStream()) { PdfDocument document = new PdfDocument(); document.Info.Title = ""; PdfPage page = document.AddPage(); // Get an XGraphics object for drawing XGraphics gfx = XGraphics.FromPdfPage(page); //Logo double logoHeigh; double logoWidth; if (settings.Logo != null) { using (var ms = new MemoryStream(settings.Logo)) { using (Image logoImg = Image.FromStream(ms)) { XImage logo = XImage.FromGdiPlusImage(logoImg); gfx.DrawImage(logo, LEFT_BOARDER, 0); logoHeigh = logoImg.Height; logoWidth = logoImg.Width; } } } else { logoHeigh = 0; logoWidth = 600; } //QR WebClient client = new WebClient(); client.Headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"; client.Headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; string url = string.Format("http://chart.googleapis.com/chart?cht=qr&chs=184x184&chl={0}&choe=UTF-8&chld=L", ticketToExport.QRCode); byte[] data = client.DownloadData(url); var memoryStream2 = new MemoryStream(data); Image qrImg = new Bitmap(memoryStream2); memoryStream2.Close(); XImage qr = XImage.FromGdiPlusImage(qrImg); gfx.DrawImage(qr, LEFT_BOARDER, logoHeigh * PIXEL_CONVERT); double rowPointer = logoHeigh * PIXEL_CONVERT + 20; XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always); // Create a font XFont font = new XFont("Verdana", 10, XFontStyle.Bold, options); // Draw the text if (!string.IsNullOrEmpty(ticketToExport.StartDate)) { gfx.DrawString(ticketToExport.StartDate, font, XBrushes.Black, new XRect(LEFT_BOARDER + QR_SIZE, rowPointer, logoWidth - QR_SIZE, LINE_HEIGHT), XStringFormats.TopLeft); rowPointer += LINE_HEIGHT; } if (!string.IsNullOrEmpty(ticketToExport.Location)) { gfx.DrawString(ticketToExport.Location, font, XBrushes.Black, new XRect(LEFT_BOARDER + QR_SIZE, rowPointer, logoWidth - QR_SIZE, LINE_HEIGHT), XStringFormats.TopLeft); rowPointer += LINE_HEIGHT; } gfx.DrawString(ticketToExport.CategoryName, font, XBrushes.Black, new XRect(LEFT_BOARDER + QR_SIZE, logoHeigh * PIXEL_CONVERT + 20 + (LINE_HEIGHT * 2), logoWidth - QR_SIZE, LINE_HEIGHT), XStringFormats.TopLeft); rowPointer += LINE_HEIGHT * 2; font = new XFont("Verdana", 10, XFontStyle.Regular, options); if (!string.IsNullOrEmpty(ticketToExport.VisitorName)) { gfx.DrawString(ticketToExport.VisitorName, font, XBrushes.Black, new XRect(LEFT_BOARDER + QR_SIZE, rowPointer, logoWidth - QR_SIZE, LINE_HEIGHT), XStringFormats.TopLeft); rowPointer += LINE_HEIGHT; } gfx.DrawString(ticketToExport.VisitorEmail, font, XBrushes.Black, new XRect(LEFT_BOARDER + QR_SIZE, rowPointer, logoWidth - QR_SIZE, LINE_HEIGHT), XStringFormats.TopLeft); rowPointer += LINE_HEIGHT * 2.5; gfx.DrawString(ticketToExport.Code, font, XBrushes.Black, new XRect(LEFT_BOARDER + QR_SIZE, logoHeigh * PIXEL_CONVERT + QR_SIZE - LINE_HEIGHT - 20, logoWidth - QR_SIZE, LINE_HEIGHT), XStringFormats.TopLeft); rowPointer += LINE_HEIGHT; XTextFormatter tf = new XTextFormatter(gfx); tf.Alignment = XParagraphAlignment.Left; if (!string.IsNullOrEmpty(ticketToExport.Note)) { tf.DrawString(ticketToExport.Note, font, XBrushes.Black, new XRect(LEFT_BOARDER, rowPointer + 10, 500, 600), XStringFormats.TopLeft); rowPointer += LINE_HEIGHT; } document.Save(memoryStream); ticketToExport.PDFTicket = memoryStream.ToArray(); } } }
public static byte[] GetZippedPdfTickets(List <TicketToGenerateWrapper> ticketsToExport, TicketSetting settings) { GetPDFTicket(ticketsToExport, settings); using (MemoryStream outStream = new MemoryStream()) { using (ZipArchive archive = new ZipArchive(outStream, ZipArchiveMode.Create, false)) { foreach (var ticket in ticketsToExport) { ZipArchiveEntry ticketEntry = archive.CreateEntry(ticket.Code + ".pdf", CompressionLevel.Fastest); //Get the stream of the attachment using (var originalFileStream = new MemoryStream(ticket.PDFTicket)) { using (var zipEntryStream = ticketEntry.Open()) { //Copy the attachment stream to the zip entry stream originalFileStream.CopyTo(zipEntryStream); } } } } return(outStream.ToArray()); } }