public async Task <IActionResult> Create([Bind("Id,Quantity,FileName,Printer,PrintDate,CompanyName,Type")] Print print) { if (print.Quantity <= 0) { return(NotFound("Vui lòng nhập số lượng files cần in")); } var curUser = await _userManager.GetUserAsync(User); if (curUser is null) { return(View("Error", "Bạn phải đăng nhập để thực hiện tác vụ này")); } var authorized = await IsAuthorized(curUser, "Prints", "Create"); if (!authorized) { return(View("AccessDenied")); } Guid tempCode = new Guid(); if (ModelState.IsValid) { Update(print, curUser); if (string.IsNullOrEmpty(print.Printer) || string.IsNullOrWhiteSpace(print.Printer)) { return(View("Error", "Vui lòng cập nhật họ tên để sử dụng tiếp tục sử dụng")); } var date = print.PrintDate.ToString("dd/MM/yyyy"); var lastName = curUser.Name.Split(" ").Last(); var printed = _context.Print.Where(e => e.Printer == lastName && e.PrintDate.ToString("dd/MM/yyyy") == date).Include(e => e.Files).FirstOrDefault(); var printer = print.Printer.Split(" ").Last(); int printedFiles = 0; if (printed != null) { printedFiles = printed.Quantity; if (print.Quantity + printedFiles > 100) { return(View("Error", $"Vui lòng nhập số lượng file nhỏ hơn {100 - printedFiles + 1}")); } printed.Quantity += print.Quantity; printed.PrintDate = print.PrintDate; for (int i = 0; i < print.Quantity; i++) { var index = (i + 1 + printedFiles).ToString("000"); var text = $"{printed.CompanyName}-{date}-{printer}-{index}"; printed.Files.Add(new Download { File = printed.FileName, QRCode = text, Image = GenerateQRCode(text) }); // var filePath = $"{Path.GetTempPath()}{text}.pdf"; // GenerateQRCode(text); //TODO add code to file // SaveFile(filePath); //TODO save file to google drive } tempCode = printed.Code; _context.Entry(printed).State = EntityState.Modified; } else { print.Files = new List <Download>(); var numberOfFiles = print.Quantity; if (numberOfFiles <= 0 || numberOfFiles > 100) { return(View("Error", "Invalid number of files{numberOfFiles}, it must be between 0 and 101")); } for (int i = 0; i < numberOfFiles; i++) { var index = (i + 1 + printedFiles).ToString("000"); var text = $"{print.CompanyName}-{date}-{printer}-{index}"; print.Files.Add(new Download { File = print.FileName, QRCode = text, Image = GenerateQRCode(text) }); // var filePath = $"{Path.GetTempPath()}{text}.pdf"; // GenerateQRCode(text); //TODO add code to file // SaveFile(filePath); //TODO save file to google drive } tempCode = print.Code; _context.Add(print); } await _context.SaveChangesAsync(); ViewBag.code = print.Code; string contents = "Dear Ms. Hương\n"; contents += $"Ngày {date} Hệ thống đã nhận được yêu cầu in {print.Quantity} Phiếu đăng ký giữ chỗ dự án Vinhomes Grand Park từ {curUser.Name}."; contents += "\nRegards.\n"; SendMail("Thông báo in hợp đồng", new MailboxAddress("Ms. Hương", "*****@*****.**"), contents); return(RedirectToAction("Download", new { code = tempCode })); } return(View("Error", $"Invalid model state {ModelState}!")); }