Example #1
0
        // <summary>
        /// Записва ЕИСПП Отговор
        /// </summary>
        /// <param name="correlationId">Идентификатор на съобщение</param>
        /// <param name="htmlCard">Получена карта</param>
        /// <param name="eisppNumber">ЕИСПП номер на Наказателно Производство</param>
        private async Task SaveResponse(string correlationId, string response, string eisppNumber)
        {
            MQEpep mq = null;

            try
            {
                mq = repo.All <MQEpep>()
                     .FirstOrDefault(m => m.MQId == correlationId);

                string           fileName = $"EISPP_Response_{eisppNumber}_{ DateTime.Today.ToString("dd.MM.yyyy_HH:mm:ss") }.xml";
                CdnUploadRequest request  = new CdnUploadRequest()
                {
                    ContentType       = System.Net.Mime.MediaTypeNames.Text.Html,
                    FileContentBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(response)),
                    FileName          = fileName,
                    SourceId          = correlationId, //mq.ParentSourceId.ToString(),
                    SourceType        = IOWebApplication.Infrastructure.Models.ViewModels.Common.SourceTypeSelectVM.Integration_EISPP_Response,
                    Title             = $"ОТГОВОР За Събитие НП: {eisppNumber} към { DateTime.Today.ToString("dd.MM.yyyy") }"
                };

                if (!(await cdnService.MongoCdn_AppendUpdate(request)))
                {
                    logger.LogError("Error in SaveCard with corelationId: {correlationId}!", correlationId);
                }
            }
            catch (Exception ex)
            {
                logger.LogError(ex, "Error in SaveCard with corelationId: {correlationId}!", correlationId);;
            }

            SetOk(correlationId, mq);
        }
Example #2
0
        /// <summary>
        /// запис на файл за бюлетин към лице
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <bool> SaveFileBulletin(int id)
        {
            TinyMCEVM htmlModel = printDocumentService.FillHtmlTemplateSentenceBulletin(id);
            string    html      = await this.RenderPartialViewAsync("~/Views/Shared/", "PreviewRaw.cshtml", htmlModel, true);

            var pdfBytes = await new ViewAsPdfByteWriter("CreatePdf", new BlankEditVM()
            {
                HtmlContent = html
            })
            {
                PageSize = Rotativa.AspNetCore.Options.Size.B5
            }
            .GetByte(this.ControllerContext);
            var pdfRequest = new CdnUploadRequest()
            {
                SourceType        = SourceTypeSelectVM.CasePersonBulletin,
                SourceId          = id.ToString(),
                FileName          = "bulletin.pdf",
                ContentType       = "application/pdf",
                Title             = "Бюлетин за съдимост",
                FileContentBase64 = Convert.ToBase64String(pdfBytes)
            };
            bool result = await cdnService.MongoCdn_AppendUpdate(pdfRequest);

            Response.Headers.Clear();

            return(result);
        }
Example #3
0
        public async Task <IActionResult> UploadFile(ICollection <IFormFile> files, CdnUploadRequest model)
        {
            if (files != null && files.Count() > 0)
            {
                var file = files.First();
                using (var ms = new MemoryStream())
                {
                    file.CopyTo(ms);
                    model.FileContentBase64 = Convert.ToBase64String(ms.ToArray());
                }
                model.ContentType = file.ContentType;
                model.FileName    = Path.GetFileName(file.FileName);
                var response = await cdnService.MongoCdn_UploadFile(model);

                if (response != null && response.Succeded)
                {
                    model.FileId = response.FileId;
                    epepService.AppendFile(model, EpepConstants.ServiceMethod.Add);
                    LogFileOperation(model.SourceType, model.SourceId, $"Добавен нов файл {model.FileName}:{model.Title}", OperationTypes.Patch);
                    return(Content("ok"));
                }
                else
                {
                    if (response != null)
                    {
                        logger.LogError($"UploadFile Error from CDN: {response.ErrorMessage}");
                    }
                    return(Content("failed"));
                }
            }
            else
            {
                return(Content("failed"));
            }
        }
Example #4
0
        /// <summary>
        /// Записва ЕИСПП карта
        /// </summary>
        /// <param name="correlationId">Идентификатор на съобщение</param>
        /// <param name="htmlCard">Получена карта</param>
        /// <param name="eisppNumber">ЕИСПП номер на Наказателно Производство</param>
        private async Task SaveCard(string correlationId, string htmlCard, string eisppNumber)
        {
            MQEpep mq = null;

            try
            {
                mq = repo.All <MQEpep>()
                     .FirstOrDefault(m => m.MQId == correlationId);

                string           decodedCard = "<!DOCTYPE html>\n" + WebUtility.HtmlDecode(htmlCard);
                string           fileName    = $"EISPP_Card_{eisppNumber}_{ DateTime.Today.ToString("dd.MM.yyyy") }.html";
                CdnUploadRequest request     = new CdnUploadRequest()
                {
                    ContentType       = System.Net.Mime.MediaTypeNames.Text.Html,
                    FileContentBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(decodedCard)),
                    FileName          = fileName,
                    SourceId          = mq.ParentSourceId.ToString(),
                    SourceType        = IOWebApplication.Infrastructure.Models.ViewModels.Common.SourceTypeSelectVM.Integration_EISPP_CardNP,
                    Title             = $"КАРТА ЗА СЪСТОЯНИЕ НА НП: {eisppNumber} към { DateTime.Today.ToString("dd.MM.yyyy") }"
                };

                if (!(await cdnService.MongoCdn_AppendUpdate(request)))
                {
                    logger.LogError("Error in SaveCard with corelationId: {correlationId}!", correlationId);
                }
            }
            catch (Exception ex)
            {
                logger.LogError(ex, "Error in SaveCard with corelationId: {correlationId}!", correlationId);;
            }

            SetOk(correlationId, mq);
        }
Example #5
0
        //[HttpPost]
        //public async Task<IActionResult> SignDoc(CaseSelectionProtokolPreviewVM model)
        //{
        //    var protokolModel = service.CaseSelectionProtokol_Preview(model.Id);

        //    string html = await this.RenderPartialViewAsync("~/Views/CaseSelectionProtokol/", "Preview.cshtml", protokolModel, true);
        //    var pdfBytes = await new ViewAsPdfByteWriter("CreatePdf", new BlankEditVM() { HtmlContent = html }, true).GetByte(this.ControllerContext);
        //    var pdfRequest = new CdnUploadRequest()
        //    {
        //        SourceType = SourceTypeSelectVM.CaseSelectionProtokol,
        //        SourceId = model.Id.ToString(),
        //        FileName = "selectionProtokol.pdf",
        //        ContentType = "application/pdf",
        //        Title = $"Протокол за разпределение {protokolModel.SelectedLawUnitName} ({protokolModel.JudgeRoleName})",
        //        FileContentBase64 = Convert.ToBase64String(pdfBytes)
        //    };
        //    if (await cdnService.MongoCdn_AppendUpdate(pdfRequest))
        //    {
        //        return RedirectToAction(nameof(SendForSign), new { id = model.Id });
        //    }
        //    else
        //    {
        //        SetErrorMessage("Проблем при създаване на протокол!");
        //        return RedirectToAction(nameof(PreviewDoc), new { id = model.Id });
        //    }
        //}

        public async Task <IActionResult> SignDoc(int id)
        {
            var protokolModel = service.CaseSelectionProtokol_Preview(id);

            string html = await this.RenderPartialViewAsync("~/Views/CaseSelectionProtokol/", "Preview.cshtml", protokolModel, true);

            var pdfBytes = await new ViewAsPdfByteWriter("CreatePdf", new BlankEditVM()
            {
                HtmlContent = html
            }, true).GetByte(this.ControllerContext);
            var pdfRequest = new CdnUploadRequest()
            {
                SourceType        = SourceTypeSelectVM.CaseSelectionProtokol,
                SourceId          = id.ToString(),
                FileName          = "selectionProtokol.pdf",
                ContentType       = "application/pdf",
                Title             = $"Протокол за разпределение {protokolModel.SelectedLawUnitName} ({protokolModel.JudgeRoleName})",
                FileContentBase64 = Convert.ToBase64String(pdfBytes)
            };

            if (await cdnService.MongoCdn_AppendUpdate(pdfRequest))
            {
                return(RedirectToAction(nameof(SendForSign), new { id = id }));
            }
            else
            {
                SetErrorMessage("Проблем при създаване на протокол!");
                return(RedirectToAction(nameof(PreviewDoc), new { id = id }));
            }
        }
Example #6
0
        public async Task <IActionResult> Blank(BlankEditVM model, string btnPreview = null)
        {
            //return new ViewAsPdf("CreatePdf", model);
            var htmlRequest = new CdnUploadRequest()
            {
                SourceType        = model.SourceType,
                SourceId          = model.SourceId,
                FileName          = "draft.html",
                ContentType       = "text/html",
                FileContentBase64 = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(model.HtmlContent ?? ""))
            };

            if (await cdnService.MongoCdn_AppendUpdate(htmlRequest))
            {
                SetSuccessMessage(MessageConstant.Values.SaveOK);
            }
            else
            {
                SetErrorMessage(MessageConstant.Values.SaveFailed);
            }

            if (!string.IsNullOrEmpty(btnPreview))
            {
                return(await blankPreview(model));
            }

            return(RedirectToAction(nameof(Blank), new { id = model.SourceId }));
        }
Example #7
0
        public override void OnActionExecuted(ActionExecutedContext context)
        {
            base.OnActionExecuted(context);

            ControllerActionDescriptor controllerActionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;

            if (controllerActionDescriptor != null)
            {
                var auditScope = this.GetCurrentAuditScope();

                if (HttpContext.Request.Method != HttpMethod.Get.Method)
                {
                    var hasDisableAuditAttribute = controllerActionDescriptor
                                                   .MethodInfo
                                                   .CustomAttributes
                                                   .Where(a => a.AttributeType == typeof(DisableAuditAttribute))
                                                   .Any();

                    if (!hasDisableAuditAttribute)
                    {
                        var _context = CurrentContext;
                        if (_context.IsRead)
                        {
                            auditScope.SetCustomField("currentContext", _context.Info, true);
                        }
                    }
                }

                if (Request.Headers.TryGetValue("X-Forwarded-For", out var currentIp))
                {
                    string ip = currentIp;

                    auditScope.SetCustomField("currentIp", ip, true);
                }

                var auditAction = auditScope?.Event?.GetMvcAuditAction();

                if (auditAction?.ActionParameters != null)
                {
                    CdnUploadRequest fileRequest = (CdnUploadRequest)auditAction.ActionParameters
                                                   .Select(x => x.Value)
                                                   .FirstOrDefault(x => x?.GetType() == typeof(CdnUploadRequest));

                    if (fileRequest != null)
                    {
                        fileRequest.FileContentBase64 = string.Empty;
                        fileRequest.FileContent       = null;
                    }
                }

                auditScope.SaveAsync();
            }
        }
Example #8
0
        public PartialViewResult UploadFile(int sourceType, string sourceId, string container, string defaultTitle)
        {
            CdnUploadRequest model = new CdnUploadRequest()
            {
                SourceType    = sourceType,
                SourceId      = sourceId,
                FileContainer = container,
                Title         = defaultTitle
            };

            model.FileUploadEnabled = config.GetValue <bool>("Environment:FileUploadEnabled");
            return(PartialView(model));
        }
Example #9
0
        public async Task <bool> MongoCdn_AppendUpdate(CdnUploadRequest request)
        {
            var files = Select(request.SourceType, request.SourceId);

            foreach (var file in files)
            {
                DeleteMongoFileData(file.FileId);
            }
            var uploadResult = await MongoCdn_UploadFile(request);

            if (uploadResult.Succeded)
            {
                request.FileId = uploadResult.FileId;
            }

            return(!string.IsNullOrEmpty(uploadResult.FileId));
        }
Example #10
0
        public async Task <IActionResult> Blank(BlankEditVM model, string btnPreview = null, string reset_mode = null)
        {
            int id = int.Parse(model.SourceId);

            if (!string.IsNullOrEmpty(reset_mode))
            {
                await cdnService.MongoCdn_DeleteFiles(new CdnFileSelect()
                {
                    SourceType = model.SourceType, SourceId = model.SourceId
                });

                SetSuccessMessage("Информацията е обновена с данните от бланката.");
                this.SaveLogOperation(this.ControllerName, nameof(Edit), "Обновяване на данните от бланката", IO.LogOperation.Models.OperationTypes.Patch, id);
                return(RedirectToAction(nameof(Blank), new { id = model.SourceId }));
            }

            //return new ViewAsPdf("CreatePdf", model);
            var htmlRequest = new CdnUploadRequest()
            {
                SourceType        = model.SourceType,
                SourceId          = model.SourceId,
                FileName          = "draft.html",
                ContentType       = "text/html",
                FileContentBase64 = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(model.HtmlContent ?? ""))
            };

            if (await cdnService.MongoCdn_AppendUpdate(htmlRequest))
            {
                SetSuccessMessage(MessageConstant.Values.SaveOK);
                this.SaveLogOperation(this.ControllerName, nameof(Edit), "Изготвяне на документ", IO.LogOperation.Models.OperationTypes.Update, id);
                if (!string.IsNullOrEmpty(btnPreview))
                {
                    return(await blankPreview(model));
                }
                return(RedirectToAction(nameof(Edit), new { id = model.SourceId }));
            }
            else
            {
                SetErrorMessage(MessageConstant.Values.SaveFailed);
            }



            return(RedirectToAction(nameof(Blank), new { id = model.SourceId }));
        }
Example #11
0
        private async Task PrepareActFile(DocumentResolutionVM actModel, string html)
        {
            byte[] pdfBytes = await new ViewAsPdfByteWriter("CreatePdf", new BlankEditVM()
            {
                HtmlContent = html
            }, true).GetByte(this.ControllerContext);

            var pdfRequest = new CdnUploadRequest()
            {
                SourceType        = SourceTypeSelectVM.DocumentResolutionPdf,
                SourceId          = actModel.Id.ToString(),
                FileName          = "documentResolution.pdf",
                ContentType       = NomenclatureConstants.ContentTypes.Pdf,
                Title             = actModel.GetFileTitle,
                FileContentBase64 = Convert.ToBase64String(pdfBytes)
            };

            await cdnService.MongoCdn_AppendUpdate(pdfRequest);
        }
Example #12
0
        public async Task <CdnUploadResult> Upload(CdnUploadRequest request)
        {
            CdnUploadResult result = new CdnUploadResult()
            {
                Succeded = false
            };

            try
            {
                result.FileId = await mongoService.UploadAsync(request);

                result.Succeded = !string.IsNullOrEmpty(result.FileId);
            }
            catch (Exception ex)
            {
                result.ErrorMessage = ex.Message;
            }
            return(result);
        }
Example #13
0
        public async Task <CdnUploadResult> MongoCdn_UploadFile(CdnUploadRequest request)
        {
            CdnUploadResult result = new CdnUploadResult()
            {
                Succeded = false
            };
            Dictionary <string, object> metadata = new Dictionary <string, object>();

            metadata.Add("contentType", request.ContentType);
            metadata.Add("sourceType", request.SourceType);
            metadata.Add("sourceId", request.SourceId);
            metadata.Add("title", request.Title);

            var options = new GridFSUploadOptions
            {
                Metadata = new BsonDocument(metadata)
            };

            request.FileContent = Convert.FromBase64String(request.FileContentBase64);

            try
            {
                string mongoFileId = (await gridFsBucket.UploadFromBytesAsync(request.FileName, request.FileContent, options)).ToString();

                if (!string.IsNullOrEmpty(mongoFileId))
                {
                    result.Succeded = SaveMongoFileData(request, mongoFileId);
                }

                result.FileId = mongoFileId;
            }
            catch (Exception ex)
            {
                result.ErrorMessage = ex.Message;
            }

            return(result);
        }
Example #14
0
        public async Task <IActionResult> Scan(ScanInfoViewModel model)
        {
            if (string.IsNullOrEmpty(model.FileName))
            {
                model.FileName = $"ScannedDocument{DateTime.Now.ToString("ddMMyyHHmmss")}.pdf";
            }
            else if (!model.FileName.EndsWith(".pdf"))
            {
                model.FileName += ".pdf";
            }

            CdnUploadRequest fileModel = new CdnUploadRequest()
            {
                ContentType       = MediaTypeNames.Application.Pdf,
                FileContentBase64 = model.FileContent,
                FileName          = model.FileName,
                SourceId          = model.SourceId,
                SourceType        = model.SourceType,
                Title             = model.Title,
                UserUploaded      = userContext.UserId
            };

            var response = await cdnService.MongoCdn_UploadFile(fileModel);

            if (response != null && response.Succeded)
            {
                fileModel.FileId = response.FileId;
                SaveLogOperation("Scan", "Scan", $"Добавен нов файл {model.FileName}:{model.Title}", OperationTypes.Patch, fileModel.SourceId);

                return(Redirect(model.ReturnUrl.AbsoluteUri));
            }
            else
            {
                TempData[MessageConstant.ErrorMessage] = MessageConstant.Values.FileUploadFailed;

                return(Redirect(model.ReturnUrl.AbsoluteUri));
            }
        }
Example #15
0
        private async Task prepareProtokolFile(int id)
        {
            var model = service.Select(new CaseDeactivationFilterVM {
                Id = id
            }).FirstOrDefault();
            var htmlALL = await this.RenderPartialViewAsync("~/Views/CaseDeactivation/", "_Protokol.cshtml", model, true);

            byte[] pdfBytes = await new ViewAsPdfByteWriter("CreatePdf", new BlankEditVM()
            {
                HtmlContent = htmlALL
            }).GetByte(this.ControllerContext);

            var pdfRequest = new CdnUploadRequest()
            {
                SourceType        = SourceTypeSelectVM.CaseDeactivate,
                SourceId          = id.ToString(),
                FileName          = "sessionAct.pdf",
                ContentType       = NomenclatureConstants.ContentTypes.Pdf,
                Title             = $"Протокол за анулиране на дело {model.CaseNumber}",
                FileContentBase64 = Convert.ToBase64String(pdfBytes)
            };
            await cdnService.MongoCdn_AppendUpdate(pdfRequest);
        }
Example #16
0
        public async Task <string> UploadAsync(CdnUploadRequest file)
        {
            Dictionary <string, object> metadata = new Dictionary <string, object>();

            metadata.Add("contentType", file.ContentType);
            metadata.Add("sourceType", file.SourceType);
            metadata.Add("sourceId", file.SourceId);
            metadata.Add("title", file.Title);

            var options = new GridFSUploadOptions
            {
                Metadata = new BsonDocument(metadata)
            };

            file.FileContent = Convert.FromBase64String(file.FileContentBase64);
            var mongoFileId = (await GridFsBucket.UploadFromBytesAsync(file.FileName, file.FileContent, options)).ToString();

            if (!string.IsNullOrEmpty(mongoFileId))
            {
                cdnService.SaveMongoFileData(file, mongoFileId);
            }
            return(mongoFileId);
        }
Example #17
0
        public PartialViewResult UploadFile(int sourceType, string sourceId, string container, string defaultTitle)
        {
            CdnUploadRequest model = new CdnUploadRequest()
            {
                SourceType    = sourceType,
                SourceId      = sourceId,
                FileContainer = container,
                Title         = defaultTitle
            };

            var maxFileSize = documentService.SystemParam_Select($"max_filesize_sourcetype_{sourceType}");

            if (maxFileSize != null)
            {
                try
                {
                    model.MaxFileSize = int.Parse(maxFileSize.ParamValue);
                }
                catch { }
            }

            model.FileUploadEnabled = config.GetValue <bool>("Environment:FileUploadEnabled");
            return(PartialView(model));
        }
Example #18
0
        public bool SaveMongoFileData(CdnUploadRequest file, string mongoFileId)
        {
            try
            {
                var mongoFile = new MongoFile()
                {
                    FileId       = mongoFileId,
                    SourceType   = file.SourceType,
                    SourceId     = file.SourceId,
                    Title        = file.Title,
                    FileSize     = file.FileContent.Length,
                    FileName     = file.FileName,
                    UserUploaded = file.UserUploaded,
                    DateUploaded = DateTime.Now
                };

                if (long.TryParse(mongoFile.SourceId, out long parsedId))
                {
                    mongoFile.SourceIdNumber = parsedId;
                }

                if (file.SignersCount > 0)
                {
                    mongoFile.SignersCount = file.SignersCount;
                }

                repo.Add(mongoFile);
                repo.SaveChanges();

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Example #19
0
        /// <summary>
        /// Запис на файл за Протокол на изпращане на ИЛ в НАП
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <bool> SaveFileExchangeDoc(int id)
        {
            TinyMCEVM htmlModel = printService.FillHtmlTemplateExchangeDoc(id);
            string    html      = await this.RenderPartialViewAsync("~/Views/Shared/", "PreviewRaw.cshtml", htmlModel, true);

            var pdfBytes = await new ViewAsPdfByteWriter("CreatePdf", new BlankEditVM()
            {
                HtmlContent = html
            }, true).GetByte(this.ControllerContext);
            var pdfRequest = new CdnUploadRequest()
            {
                SourceType        = SourceTypeSelectVM.ExchangeDoc,
                SourceId          = id.ToString(),
                FileName          = "exchangeDoc.pdf",
                ContentType       = "application/pdf",
                Title             = "Протокол на изпращане на ИЛ в НАП",
                FileContentBase64 = Convert.ToBase64String(pdfBytes)
            };
            bool result = await cdnService.MongoCdn_AppendUpdate(pdfRequest);

            Response.Headers.Clear();

            return(result);
        }
Example #20
0
        private async Task <byte[]> RegixReportSaveFile(int regixTypeId, int id)
        {
            string html = "";

            switch (regixTypeId)
            {
            case NomenclatureConstants.RegixType.PersonData:
                RegixPersonDataVM modelPerson = service.GetPersonalDataById(id);
                html = await this.RenderPartialViewAsync("~/Views/RegixReport/", "_PersonDataResponse.cshtml", modelPerson, true);

                break;

            case NomenclatureConstants.RegixType.PersonPermanentAddress:
            case NomenclatureConstants.RegixType.PersonCurrentAddress:
                RegixPersonAddressVM modelAddress = service.GetPersonAddressById(id);
                html = await this.RenderPartialViewAsync("~/Views/RegixReport/", "_PersonAddressResponse.cshtml", modelAddress, true);

                break;

            case NomenclatureConstants.RegixType.EmploymentContracts:
                RegixEmploymentContractsVM modelEmployment = service.GetEmploymentContractsById(id);
                html = await this.RenderPartialViewAsync("~/Views/RegixReport/", "_EmploymentContractsResponse.cshtml", modelEmployment, true);

                break;

            case NomenclatureConstants.RegixType.DisabilityCompensationByPaymentPeriod:
            case NomenclatureConstants.RegixType.UnemploymentCompensationByPaymentPeriod:
                RegixCompensationByPaymentPeriodVM modelCompensation = service.GetCompensationByPaymentPeriodById(id);
                html = await this.RenderPartialViewAsync("~/Views/RegixReport/", "_CompensationByPaymentPeriodResponse.cshtml", modelCompensation, true);

                break;

            case NomenclatureConstants.RegixType.PensionIncomeAmount:
                RegixPensionIncomeAmountVM modelPension = service.GetPensionIncomeAmountReportById(id);
                html = await this.RenderPartialViewAsync("~/Views/RegixReport/", "_PensionIncomeAmountReportResponse.cshtml", modelPension, true);

                break;

            case NomenclatureConstants.RegixType.PersonalIdentityV2:
                RegixPersonalIdentityV2VM modelIdentityV2 = service.GetPersonalIdentityV2ById(id);
                html = await this.RenderPartialViewAsync("~/Views/RegixReport/", "_PersonalIdentityV2Response.cshtml", modelIdentityV2, true);

                break;

            case NomenclatureConstants.RegixType.ActualStateV3:
                (bool result, string errorMessage, RegixActualStateV3VM modelActualStateV3) = service.GetActualStateV3ById(id);
                html = await this.RenderPartialViewAsync("~/Views/RegixReport/", "_ActualStateV3Response.cshtml", modelActualStateV3, true);

                break;

            case NomenclatureConstants.RegixType.StateOfPlay:
                RegixStateOfPlayVM modelState = service.GetStateOfPlayById(id);
                html = await this.RenderPartialViewAsync("~/Views/RegixReport/", "_StateOfPlayResponse.cshtml", modelState, true);

                break;

            case NomenclatureConstants.RegixType.PersonDataAddress:
                RegixPersonDataAddressVM modelPersonDataAddress = service.GetPersonDataAddressById(id);
                html = await this.RenderPartialViewAsync("~/Views/RegixReport/", "_PersonDataAddressResponse.cshtml", modelPersonDataAddress, true);

                break;

            default:
                break;
            }

            var pdfBytes = await new ViewAsPdfByteWriter("CreatePdf", new BlankEditVM()
            {
                HtmlContent = html
            }).GetByte(this.ControllerContext);

            var pdfRequest = new CdnUploadRequest()
            {
                SourceType        = SourceTypeSelectVM.RegixReport,
                SourceId          = id.ToString(),
                FileName          = "regixreport.pdf",
                ContentType       = "application/pdf",
                Title             = "Справка",
                FileContentBase64 = Convert.ToBase64String(pdfBytes)
            };
            await cdnService.MongoCdn_AppendUpdate(pdfRequest);

            return(pdfBytes);
        }
Example #21
0
        protected override async Task SendMQ(MQEpep mq)
        {
            string text = mq.Content == null ? "" : Encoding.UTF8.GetString(mq.Content);

            if (string.IsNullOrEmpty(text))
            {
                using (var scope = new TransactionScope())
                {
                    text       = GenerateXml(mq);
                    mq.Content = Encoding.UTF8.GetBytes(text);
                    repo.Update(mq);
                    repo.SaveChanges();
                    scope.Complete();
                }
            }

            var response = await requester.PostAsyncTextXml(uploadUrl.AbsoluteUri, text);

            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();

                XElement result = null;
                if (!string.IsNullOrEmpty(content))
                {
                    XDocument message = XDocument.Parse(content);
                    result = message?.Element("response")?.Element("success");
                }
                else
                {
                    content = "Получен е празен резултат от ИСПН";
                }
                if (result != null)
                {
                    mq.IntegrationStateId = IntegrationStates.TransferOK;
                    mq.DateTransfered     = DateTime.Now;
                    mq.Content            = Encoding.UTF8.GetBytes(text);
                    repo.Update(mq);
                    repo.SaveChanges();
                    if (caseMq != null)
                    {
                        var mqHash = caseMq.FirstOrDefault(x => x.Id == mq.Id);
                        mqHash.Content            = mq.Content;
                        mqHash.IntegrationStateId = mq.IntegrationStateId;
                    }
                    string           fileName = $"Ispn_{mq.Id}_{ DateTime.Today:dd.MM.yyyy}.xml";
                    CdnUploadRequest request  = new CdnUploadRequest()
                    {
                        ContentType       = System.Net.Mime.MediaTypeNames.Text.Html,
                        FileContentBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(content)),
                        FileName          = fileName,
                        SourceId          = mq.ParentSourceId.ToString(),
                        SourceType        = SourceTypeSelectVM.Integration_ISPN,
                        Title             = $"Отговор към { DateTime.Today:dd.MM.yyyy}"
                    };

                    if (!(await cdnService.MongoCdn_AppendUpdate(request)))
                    {
                        logger.LogError("Error in SaveContent ISPN mqId {mq.Id}!", mq.Id.ToString());
                    }
                }
                else
                {
                    SetErrorToMQ(mq, IntegrationStates.DataContentError, content);
                }
            }
            else
            {
                throw new Exception($"Error {response.StatusCode} : {response.ReasonPhrase}  sending message ISPN!");
            }
        }
Example #22
0
        /// <summary>
        /// Запис на файл за документ
        /// </summary>
        /// <param name="id"></param>
        /// <param name="documentId"></param>
        /// <returns></returns>
        public async Task <IActionResult> GenerateDocumentFile(int id, long documentId)
        {
            if (!service.DocumentTemplate_UpdateDocumentId(id, documentId))
            {
                SetErrorMessage("Проблем при изчитане на създаден документ");
                return(RedirectToAction("Edit", "Document", new { id = documentId }));
            }
            var docTemplate = service.GetById <DocumentTemplate>(id);
            var headerModel = service.DocumentTemplate_InitHeader(id);

            byte[] fileBytes = null;

            if (docTemplate.HtmlTemplateId > 0)
            {
                string preparedBlank = await cdnService.LoadHtmlFileTemplate(new CdnFileSelect()
                {
                    SourceType = SourceTypeSelectVM.DocumentTemplate, SourceId = id.ToString()
                });

                fileBytes = await PdfBytesFromTemplate(docTemplate.Id, preparedBlank);

                //string html = FillBlankByTemplate(docTemplate.Id, preparedBlank);
                ////string html = await this.RenderPartialViewAsync("~/Views/Shared/", "PreviewRaw.cshtml", htmlModel, true);
                //fileBytes = await new ViewAsPdfByteWriter("CreatePdf", new BlankEditVM() { HtmlContent = html }).GetByte(this.ControllerContext);
            }
            else
            {
                int sourceType = SourceTypeSelectVM.DocumentTemplate;

                fileBytes = await GetFileBytes(headerModel, sourceType, id.ToString());
            }

            var pdfRequest = new CdnUploadRequest()
            {
                SourceType        = SourceTypeSelectVM.DocumentPdf,
                SourceId          = documentId.ToString(),
                FileName          = "documentTemplate.pdf",
                ContentType       = "application/pdf",
                Title             = $"{headerModel.DocumentTypeLabel} {headerModel.DocumentNumber}/{headerModel.DocumentDate:dd.MM.yyyy}",
                FileContentBase64 = Convert.ToBase64String(fileBytes)
            };

            await cdnService.MongoCdn_AppendUpdate(pdfRequest);

            var newTask = new WorkTaskEditVM()
            {
                SourceType      = SourceTypeSelectVM.Document,
                SourceId        = documentId,
                TaskTypeId      = WorkTaskConstants.Types.Document_Sign,
                UserId          = headerModel.AuthorId,
                TaskExecutionId = WorkTaskConstants.TaskExecution.ByUser
            };

            taskService.CreateTask(newTask);

            if (docTemplate.SourceType == SourceTypeSelectVM.ExchangeDoc)
            {
                await SaveFileExchangeDoc((int)docTemplate.SourceId);
            }
            SetSuccessMessage("Регистрирането на създадения документ премина успешно.");
            return(RedirectToAction("Edit", "Document", new { id = documentId }));
        }