Exemplo n.º 1
0
        public ActionResult Save()
        {
            Models.PersonalData  personalData  = JsonConvert.DeserializeObject <Models.PersonalData>(Request.Form["personalData"]);
            Models.FinancialData financialData = GetFinancialData(Request.Form["financialData"]);
            Models.RevenueData   revenueData   = JsonConvert.DeserializeObject <Models.RevenueData>(Request.Form["revenueData"]);

            var identity   = Request.Files["identity"];
            var powerbill  = Request.Files["powerbill"];
            var IRPF       = Request.Files["IRPF"];
            var additional = Request.Files["additional"];

            var storePath = ConfigurationManager.AppSettings.Get("store");
            var folder    = new Random().Next(9999, 99999).ToString();

            if (!Directory.Exists(Path.Combine(storePath, folder)))
            {
                Directory.CreateDirectory(Path.Combine(storePath, folder));
            }


            var pdf = BuildPDF(personalData, financialData, revenueData, Path.Combine(storePath, folder));

            SaveFiles(identity, powerbill, IRPF, additional, Path.Combine(storePath, folder));
            SendEmail(pdf, personalData.Email, folder);

            return(RedirectToAction("Index"));
        }
Exemplo n.º 2
0
        private string BuildPDF(Models.PersonalData personalData, Models.FinancialData financialData, Models.RevenueData revenueData, string store)
        {
            string fileNameExisting = ConfigurationManager.AppSettings.Get("template");
            string fileNameNew      = Path.Combine(store, personalData.RG + "_" + new Random().Next(9999, 99999) + ".pdf");

            using (var existingFileStream = new FileStream(fileNameExisting, FileMode.Open))
                using (var newFileStream = new FileStream(fileNameNew, FileMode.Create))
                {
                    var pdfReader = new PdfReader(existingFileStream);
                    var stamper   = new PdfStamper(pdfReader, newFileStream);

                    var form = stamper.AcroFields;
                    form.GenerateAppearances = true;
                    var fieldKeys = form.Fields.Keys;

                    foreach (string fieldKey in fieldKeys)
                    {
                        foreach (var property in typeof(Models.PersonalData).GetProperties())
                        {
                            if (property.Name == fieldKey)
                            {
                                form.SetField(fieldKey, property.GetValue(personalData).ToString());
                            }
                        }

                        foreach (var property in typeof(Models.Accounts).GetProperties())
                        {
                            if (financialData.AccountsList == null)
                            {
                                break;
                            }

                            foreach (var account in financialData.AccountsList)
                            {
                                if (property.Name == fieldKey)
                                {
                                    form.SetField(fieldKey, property.GetValue(account).ToString());
                                }
                            }
                        }

                        foreach (var property in typeof(Models.RevenueData).GetProperties())
                        {
                            if (property.Name == fieldKey)
                            {
                                form.SetField(fieldKey, property.GetValue(revenueData).ToString());
                            }
                        }
                    }

                    stamper.FormFlattening = true;

                    stamper.Close();
                    pdfReader.Close();

                    return(fileNameNew);
                }
        }