/// <summary> /// Gets the string path to save the documents of a certificate /// </summary> /// <param name="certificate">Current certificate</param> /// <returns></returns> private string GetDocumentFilePath(Certificate certificate) { List<WorkflowStatusEnum> status = new List<WorkflowStatusEnum>() { WorkflowStatusEnum.Approved, WorkflowStatusEnum.Ongoing, WorkflowStatusEnum.Closed }; string path = string.Empty; if (status.Contains(certificate.WorkflowStatusId) && certificate.CertificateStatusId == CertificateStatusEnum.Conform) { string entryPointName = StaticReferences.GetEntryPoints().FirstOrDefault(x => x.EntryPointId == certificate.EntryPointId).Name; path = string.Concat(App.CurrentUser.FilePath, entryPointName, "\\", certificate.Sequential, "\\"); } else if (status.Contains(certificate.WorkflowStatusId) && certificate.CertificateStatusId == CertificateStatusEnum.NonConform) { path = string.Concat(App.CurrentUser.FilePath, certificate.Sequential, "\\"); } else { string certificateIdentifier = string.IsNullOrEmpty(certificate.Sequential) ? certificate.CertificateId.ToString() : certificate.Sequential; path = string.Concat(App.CurrentUser.FilePath, certificateIdentifier, "\\"); } return path; }
public void GenerateWordTemplate() { Certificate cert=new Certificate(); cert.CertificateStatusId = CertificateStatusEnum.Conform; cert.IssuanceDate=DateTime.Now; cert.Sequential="CHGVA125631"; cert.EntryPoint=new EntryPoint{ Name="TestEntryPoint"}; string templatePath=string.Concat(Directory.GetCurrentDirectory(),"\\","Coc.docx"); string errorValidation = string.Empty; var res = WordManagement.GenerateWordReport(cert, templatePath,out errorValidation); Assert.AreEqual(errorValidation, string.Empty); }
private string FixComdivNumberInformation(Certificate certificate) { string fixedComdivNumber = certificate.ComdivNumber; fixedComdivNumber = fixedComdivNumber.Replace("/", ""); fixedComdivNumber = fixedComdivNumber.Replace("_", ""); fixedComdivNumber = fixedComdivNumber.Replace("-", ""); fixedComdivNumber = fixedComdivNumber.Replace("(", ""); fixedComdivNumber = fixedComdivNumber.Replace(")", ""); fixedComdivNumber = fixedComdivNumber.Replace("[", ""); fixedComdivNumber = fixedComdivNumber.Replace("]", ""); fixedComdivNumber = fixedComdivNumber.Replace("*", ""); fixedComdivNumber = fixedComdivNumber.Replace("+", ""); fixedComdivNumber = fixedComdivNumber.Replace(".", ""); fixedComdivNumber = fixedComdivNumber.Replace("%", ""); fixedComdivNumber = fixedComdivNumber.Replace("&", ""); fixedComdivNumber = fixedComdivNumber.Replace("=", ""); fixedComdivNumber = fixedComdivNumber.Replace(@"\", ""); fixedComdivNumber = fixedComdivNumber.Replace("#", ""); fixedComdivNumber = fixedComdivNumber.Replace(",", ""); fixedComdivNumber = fixedComdivNumber.Replace(";", ""); fixedComdivNumber = fixedComdivNumber.Replace(":", ""); return fixedComdivNumber; }
/// <summary> /// Validates the report. /// </summary> /// <param name="model">Certificate model.</param> /// <param name="sdtElements">Elements of Word documents.</param> /// <returns>Validation list</returns> public static List<string> ValidateReport(Certificate model, MainDocumentPart mainPart) { List<string> logs = new List<string>(); var headerSection = mainPart.HeaderParts.FirstOrDefault(); if(headerSection==null) { logs.Add("Header section does not exist."); return logs; } var sdtHeaderElements =headerSection.Header.Descendants<SdtElement>(); var sdtBodyElements = mainPart.Document.Body.Descendants<SdtElement>(); ValidateInBlock(sdtHeaderElements, "IssuanceDate", logs); if (model.CertificateStatusId == CertificateStatusEnum.Conform) { ValidateInBlock(sdtHeaderElements, "COCNo", logs); ValidateInBlock(sdtBodyElements, "EntryPoint", logs); ValidateInBlock(sdtBodyElements, "PrePaid", logs); } else ValidateInBlock(sdtHeaderElements, "NCRNo", logs); ValidateInBlock(sdtBodyElements, "FOBValue", logs); ValidateInBlock(sdtBodyElements, "IssuerName", logs); ValidateInBlock(sdtBodyElements, "Signature", logs); return logs; }
/// <summary> /// Generate word report /// </summary> /// <param name="model"></param> /// <param name="templatePath"></param> /// <param name="signatureArray"></param> /// <param name="errorTagValidation"></param> /// <returns></returns> public static MemoryStream GenerateWordReport(Certificate model, string templatePath, out string errorValidation, byte[] signatureArray = null, string issuerName = null, byte[] signetArray = null, string officeName = null) { //Put in memory the template file byte[] byteArray = File.ReadAllBytes(templatePath); errorValidation = string.Empty; MemoryStream ms = new MemoryStream(); ms.Write(byteArray, 0, (int)byteArray.Length); using (WordprocessingDocument theDoc = WordprocessingDocument.Open(ms, true)) { MainDocumentPart mainPart = theDoc.MainDocumentPart; List<string> logs = ValidateReport(model, mainPart); if (logs.Count > 0) { errorValidation = "The certificate document has an incorrect format: \r\n\t"; errorValidation += string.Join("\r\n\t", logs); return null; } var sdtElements = mainPart.Document.Body.Descendants<SdtElement>(); //includes runs, blocks, cells var sdtHeaderElements = mainPart.HeaderParts.FirstOrDefault().Header.Descendants<SdtElement>(); InsertInBlock(sdtHeaderElements, "IssuanceDate", model.IssuanceDate.HasValue ? model.IssuanceDate.Value.ToString("dd/MM/yyyy") : string.Empty); //For Coc if (model.CertificateStatusId == CertificateStatusEnum.Conform) { InsertInBlock(sdtHeaderElements, "COCNo", model.Sequential); InsertInBlock(sdtElements, "EntryPoint", model.EntryPoint != null ? model.EntryPoint.Name : string.Empty); InsertInBlock(sdtElements, "PrePaid", model.IsInvoiced.GetValueOrDefault() ? ServiceResource.Yes : ServiceResource.No); } //For Ncr else InsertInBlock(sdtHeaderElements, "NCRNo", model.Sequential); InsertInBlock(sdtElements, "FOBValue", model.FOBValue.Value.ToString("F2")); //Only when it has signature, it is issuer and set issuerName. Else, blank the issuer name if (signatureArray != null) { InsertImage(theDoc, new MemoryStream(signatureArray),"Signature"); InsertInBlock(sdtElements, "IssuerName", issuerName); } else InsertInBlock(sdtElements, "IssuerName", ServiceResource.AutomaticText); //Only when office has signet if (signetArray != null) InsertImage(theDoc, new MemoryStream(signetArray), "Stamp"); if(!string.IsNullOrEmpty(officeName)) InsertInBlock(sdtElements, "OfficeName", officeName); else InsertInBlock(sdtElements, "OfficeName", ServiceResource.AutomaticText); // Save the changes to the table back into the document. mainPart.Document.Save(); } return ms; }
/// <summary> /// View certificate file /// </summary> /// <param name="certificate">Certificate information</param> private void ViewFile(Certificate certificate) { _context.GetCertificateDocumentByCertificateId(certificate.CertificateId, GetDocumentDone,certificate); }
/// <summary> /// Show history pop up /// </summary> /// <param name="certificate">Certificate</param> private void ExecuteViewHistoryCommand(Certificate certificate) { CertificateTrackingChildWindow trackWindow = new CertificateTrackingChildWindow(); CertificateTrackingViewModel trackModel = new CertificateTrackingViewModel(certificate.CertificateId); trackModel.CloseWindow += (s, e) => trackWindow.Close(); trackWindow.DataContext = trackModel; trackWindow.Show(); }
/// <summary> /// Edit the selected certificate /// </summary> /// <param name="item">certificate item</param> private void EditCertificate(Certificate item) { if (CertificateEditionRequested != null) { CertificateViewModel certificateViewModel = new CertificateViewModel(); certificateViewModel.OnSaveCompleted += Model_OnSaveCompleted; if (item.EntityState == EntityState.Detached) certificateViewModel.InitializeNew(item); else certificateViewModel.Initialize(item.CertificateId, string.IsNullOrEmpty(item.Sequential) ? item.ComdivNumber : item.Sequential); CertificateEditionRequested(this, new ContextEditionEventArgs<CertificateViewModel>(certificateViewModel)); } }
public void InitializeNew(Certificate certificate) { _label = "New Certificate"; Certificate = certificate; EntryPoints = StaticReferences.GetEntryPoints(); DocumentList = new ObservableCollection<Document>(); IsNew = true; SetHeaderButtonsVisibility(); IsTypeCertifRadioButtomVisible = true; }