public ActionResult ExportContractDraftPdf(ExportContractDraftViewModel model, bool isNew = true) { if (isNew) { _contractsHelper.CreateDraft(model, User.Identity.Name); } var quote = _db.Quotes.First(q => q.Id == model.QuoteId); var draft = _db.ContractDrafts.OrderByDescending(c => c.Id).First(c => c.RelatedQuoteId == model.QuoteId); var modelOut = new ExportContractDraftPdfViewModel() { Quote = quote, ContractDraft = draft }; var htmlContent = this.RenderViewToString("~/Areas/Sales/Views/Shared/Contract.cshtml", modelOut); var htmlToPdf = new HtmlToPdfConverter { Size = PageSize.A4, Orientation = PageOrientation.Portrait, Zoom = 1F, Margins = new PageMargins { Top = 20, Bottom = 20, Left = 20, Right = 20 } }; byte[] pdfBytes = htmlToPdf.GeneratePdf(htmlContent); FileResult fileResult = new FileContentResult(pdfBytes, "application/pdf"); fileResult.FileDownloadName = String.Format("{0}-Prijedlog ugovora-{1}_{2}.pdf", modelOut.Quote.Organization.SubjectName, modelOut.Quote.QuoteLines.Any(ql => ql.Service.ServiceType == Service.ServiceTypeEnum.Packages) ? modelOut.Quote.QuoteLines.First(ql => ql.Service.ServiceType == Service.ServiceTypeEnum.Packages).Service.ServiceName : string.Empty, modelOut.Quote.QuoteLines.First(ql => ql.Service.ServiceType == Service.ServiceTypeEnum.Documents).Quantity); return(fileResult); }
[Obsolete] //temporary marker public JsonResult RegisterQuoteRequest() { var model = new QuoteRequestModel(); var returnModel = new ClickVoxApiResponse(); if (TryUpdateModel(model)) { if (model.type == "ponuda") { if (_db.Organizations.Any(o => o.VAT == model.data.oib && o.SubjectBusinessUnit == string.Empty)) { var merId = _db.Organizations.FirstOrDefault(o => o.VAT == model.data.oib && o.SubjectBusinessUnit == string.Empty).MerId; _organizationHelperMethods.SyncOrganizationInformation(merId); // Creating the folder to store quote and contract draft var path = System.IO.Directory.CreateDirectory(System.IO.Path.Combine(App.ExportPathGlobal + "Apis/RegisterQuoteRequest/" + model.data.oib + "_" + model.data.imeIPrezime + "_" + DateTime.Now.ToString("yyyyMMdd-HHmm"))); // Creating database entity var newEntity = _db.ClickVoxQuoteRequests.Add(new ClickVoxQuoteRequest() { RelatedOrganizationId = _db.Organizations.FirstOrDefault(o => o.VAT == model.data.oib && o.SubjectBusinessUnit == string.Empty).MerId, RequestEmail = model.data.eMail, RequestPhoneNumber = model.data.telefon, RequestNote = model.data.napomene, RequestCreatorName = model.data.imeIPrezime, RequestOrganizationName = model.data.nazivTvrtke, RequestNumberOfInvoices = model.data.mjesecniBrojRacunaPremaPravnimOsobama, DocumentsFolderPath = path.FullName, InsertDate = DateTime.Now }); _db.SaveChanges(); var package = _quoteHelperMethods.DefinePackage(int.Parse(model.data.mjesecniBrojRacunaPremaPravnimOsobama)); // define package for Quote var quote = _quoteHelperMethods.CreateAutomatedQuote(model); // get QuoteID _quoteHelperMethods.CreateQuoteLinesForAutomatedQuote(package, quote); // create QuoteLines // prepare HTML for Quote and save PDF var htmlModel = new AutomaticQuotePdfViewModel() { Quote = _db.Quotes.Find(quote), User = new ApplicationUser(), AutomaticRequest = newEntity }; var htmlContent = this.RenderViewToString("~/Areas/Sales/Views/Shared/PdfQuoteAutomatic.cshtml", htmlModel); _quoteHelperMethods.SavePdfQuote(path.FullName, htmlContent); // prepare Contract Draft var contractDraftModel = new ExportContractDraftViewModel() { QuoteId = quote, Date = DateTime.Today.ToShortDateString(), Signer = "_______________", Position = "_______________", Header = "_______________", OrganizationId = newEntity.RelatedOrganizationId, SuggestedDate = DateTime.Today }; _contractsHelperMethods.CreateDraft(contractDraftModel, "Moj-eRačun"); var htmlContractModel = new ExportContractDraftPdfViewModel() { Quote = _db.Quotes.Find(quote), ContractDraft = _db.ContractDrafts.OrderByDescending(c => c.Id).First(c => c.RelatedQuoteId == quote) }; var htmlContractContent = this.RenderViewToString("~/Areas/Sales/Views/Shared/Contract.cshtml", htmlContractModel); _contractsHelperMethods.SavePdfDraft(path.FullName, htmlContractContent); // send email var filePaths = System.IO.Directory.EnumerateFiles(path.FullName); var quoteFile = System.IO.Path.Combine(filePaths.First(x => x.Contains("Ponuda"))); var contractFile = System.IO.Path.Combine(filePaths.First(x => x.Contains("Ugovor"))); var quoteAtt = new Attachment(quoteFile); var contractAtt = new Attachment(contractFile); var promoAtt = new Attachment(AppDomain.CurrentDomain.BaseDirectory + "Content/Zasto_Moj-eRacun.pdf"); var priceListAtt = new Attachment(AppDomain.CurrentDomain.BaseDirectory + "Content/Cjenik_Elektronički računi d.o.o..pdf"); _helperMethods.SendAutomaticQuoteEmail("*****@*****.**", model.data.eMail, AppDomain.CurrentDomain.BaseDirectory + "Content/mail_files/automatic_quoteRequest.html", quoteAtt, contractAtt, promoAtt, priceListAtt); // return response returnModel.Status = "OK"; returnModel.Message = "Uspješno je zabilježen zahtjev za ponudom!"; } else { returnModel.Status = "ERROR"; returnModel.Message = "Nepostojeća tvrtka u Moj-CRM sustavu!"; } } else { returnModel.Status = "ERROR"; returnModel.Message = "Pogrešan tip poruke!"; } } else { returnModel.Status = "ERROR"; returnModel.Message = "Greška prilikom bilježenja zahtjeva za ponudom!"; } return(Json(returnModel)); }