Example #1
0
        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);
        }
Example #2
0
        [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));
        }