private async Task InstructWriteSignaturePartialAsync(XElement signaturePartialElement, Dictionary <string, string> valuesByReference) { var signatureValuesByReference = new Dictionary <string, string>() { { "sign", _model.Sign.ToString().ToLowerInvariant() } }; var signatoryIdReferenceAttribute = signaturePartialElement.Attributes().FirstOrDefault(a => a.Name == "signatory-id"); DocumentSignatory signatory = null; if (signatoryIdReferenceAttribute != null) { var signatoryIdReference = signatoryIdReferenceAttribute.Value; if (valuesByReference.TryGetValue(signatoryIdReference, out var signatoryId)) { signatory = _model.Exports.GetSignatory(signatoryId); } } if (_model.Sign && signatory == null) { throw new Exception($"Template error: Could not find signatory with ID reference {signatoryIdReferenceAttribute.Value}"); } var representingAttribute = signaturePartialElement.Attributes().FirstOrDefault(a => a.Name == "representing"); var isRepresenting = representingAttribute != null; signatureValuesByReference.Add("signatory.id", signatory?.Id ?? string.Empty); signatureValuesByReference.Add("signatory.name", signatory?.Name ?? string.Empty); if (isRepresenting) { signatureValuesByReference.Add("representing", true.ToString().ToLowerInvariant()); signatureValuesByReference.Add("company.name", valuesByReference[representingAttribute.Value]); } else { signatureValuesByReference.Add("representing", false.ToString().ToLowerInvariant()); } await WritePartialAsync("signature", signatureValuesByReference); }
public ActionResult SetSignature(List<SignatoryBox> lstSignatoryBoxes, string idDoc) { var result = new { Status = "OK", Message = string.Empty }; try { if (lstSignatoryBoxes != null && !string.IsNullOrEmpty(idDoc)) { Guid idDocument = Guid.Empty; Guid.TryParse(idDoc, out idDocument); var listDocumentSignatories = new List<DocumentSignatory>(); lstSignatoryBoxes.ToList().ForEach(item => { var iddc = 0; int.TryParse(item.iddocsign, out iddc); var documentSignatory = new DocumentSignatory() { idDocument = idDocument, Page = item.page, X = item.x, Y = item.y, Width = item.w, Height = item.h, DateCreated = DateTime.Now, idSignatory = new Guid(item.id), idDocumentSignatory = iddc }; listDocumentSignatories.Add(documentSignatory); }); var listDocSign = DocumentSignatureBL.GetDocumentSignatoryListByDocument(idDocument); if (listDocumentSignatories.Any()) { if (listDocSign != null && listDocSign.Any() && listDocSign.Any(x => x.Page == listDocumentSignatories.ElementAt(0).Page)) { listDocumentSignatories.ToList().ForEach(DocumentSignatureBL.UpdateZoneSignature); } else { listDocumentSignatories.ToList().ForEach(DocumentSignatureBL.DefinirZoneSignature); } } //Update documents source : GeneratedFromModel = false bool isFromModel = false; DocumentBL.UpdateDocumentSource(idDocument, isFromModel); } } catch (Exception ex) { Business.Log.Log.AppendException(ex); result = new { Status = "KO", Message = ex.Message }; } return Json(result, JsonRequestBehavior.AllowGet); }
public ActionResult SignerConventionParSDG(string id = "") { Guid idTransaction; if (!string.IsNullOrEmpty(id)) { Guid.TryParse(id, out idTransaction); } else { SessionManager.Get<Guid>(CURRENT_SIGNATURE_TRANSACTION_ID, out idTransaction); } var firmSDG = SessionManager.GetFirmInstitutionSession(); var firmCGP = SessionManager.GetFirmInstutionCGPSession(); var currentUser = SessionManager.GetUserSession(); if (firmCGP == null) { return RedirectToPageIfCGPNotDefined(); } //1- Get documents list var isFromModel = true; var documentsFromModel = DocumentBL.GetDocuments(idTransaction, isFromModel); //TODO-TEST-------------------------------------------------- //documentsFromModel = documentsFromModel.Where(x => x.DocumentType == "CCOMP").ToList(); //FIN TEST---------------------------------------------------- //2- Get signatories var signatories = SignatoryBL.GetSignatories(idTransaction); var signatoryCGP = signatories.FirstOrDefault(x => x.Role == SignatoryBL.Roles.CGP.ToString()); var signatorySDG = signatories.FirstOrDefault(x => x.Role == SignatoryBL.Roles.SDG.ToString()); if (signatoryCGP == null || signatorySDG == null) { throw new Exception(_languageContent.GetContent("all_signatories_not_defined")); } //3- Generate document and create signatory fields foreach (var docFromModel in documentsFromModel) { int pageCount = 0; byte[] byteFile = null; var relativepath = string.Empty; var filename = string.Empty; var isConventionDoc = true; var fullPath = ElectronicSafeDocumentBL.BuildSignatureDocumentPath(docFromModel.DocumentType.ToDocumentTypeEnum(), firmCGP.FirmInstitutionName, firmCGP.idFirmInstitution.ToString(), isConventionDoc, out filename, out relativepath); var destinationPathFilename = string.Format("{0}//{1}", fullPath, filename); var forceDownload = false; //save to disk ? //Generate document : getting pageCount byteFile = DocumentModelBL.ConvertHtmlSringToPDF(firmSDG, firmCGP.FirmInstitutionName, docFromModel, destinationPathFilename, forceDownload,out pageCount); //Update document location/filename docFromModel.Location = relativepath; docFromModel.Name = filename; DocumentBL.UpdateDocument(docFromModel); //Create document-signatories var listDocumentSignatoriesFromDB = DocumentSignatureBL.GetDocumentSignatoryListByDocument(docFromModel.idDocument); var listDocumentSignatories = new List<DocumentSignatory>(); var documentSignatorySDG = listDocumentSignatoriesFromDB.FirstOrDefault(x => x.idSignatory == signatorySDG.idSignatory); if (documentSignatorySDG == null) { documentSignatorySDG = new DocumentSignatory() { idDocument = docFromModel.idDocument, idSignatory = signatorySDG.idSignatory, Page = pageCount, X = 34, Y = 178, Width = 64, Height = 36, DateCreated = DateTime.Now, }; } else { documentSignatorySDG.Page = pageCount; } var documentSignatoryCGP = listDocumentSignatoriesFromDB.FirstOrDefault(x => x.idSignatory == signatoryCGP.idSignatory); if (documentSignatoryCGP == null) { documentSignatoryCGP = new DocumentSignatory() { idDocument = docFromModel.idDocument, idSignatory = signatoryCGP.idSignatory, Page = pageCount, X = 120, Y = 178, Width = 64, Height = 36, DateCreated = DateTime.Now, }; } else { documentSignatoryCGP.Page = pageCount; } listDocumentSignatories.Add(documentSignatorySDG); listDocumentSignatories.Add(documentSignatoryCGP); //Save signature zone listDocumentSignatories.ToList().ForEach(DocumentSignatureBL.SaveZoneSignature); } return RedirectToAction("SignerDocument", "Signature", new { id = signatorySDG.idSignatory }); }
public static void SaveZoneSignature(DocumentSignatory docSign) { using (var db = new UpsilabEntities()) { if (docSign.idDocumentSignatory > 0) { db.DocumentSignatory.Attach(docSign); db.ObjectStateManager.ChangeObjectState(docSign, System.Data.EntityState.Modified); db.SaveChanges(); } else { db.DocumentSignatory.Attach(docSign); db.ObjectStateManager.ChangeObjectState(docSign, System.Data.EntityState.Added); db.SaveChanges(); } } }
public static void DefinirZoneSignature(DocumentSignatory docSign) { using (var db = new UpsilabEntities()) { db.DocumentSignatory.AddObject(docSign); db.SaveChanges(); } }
public ActionResult SetSignature(List<SignatoryBox> lstsignatorybox) { try { if (lstsignatorybox != null) { Guid idDocument = Guid.Empty; SessionManager.Get<Guid>(DocumentIdSessionKey, out idDocument); using (Data.Model.UpsilabEntities db = new UpsilabEntities()) { foreach (SignatoryBox item in lstsignatorybox) { //HAJA Update //DocumentSignatory ds = db.DocumentSignatory.Where(d => d.idDocument == idDocument && d.idSignatory == new Guid(item.id)).FirstOrDefault(); DocumentSignatory ds = null; //HAJA Update if (ds != null) { ds.X = item.x; ds.Y = item.y; ds.Width = item.w; ds.Height = item.h; ds.Page = item.page; } else { ds = new DocumentSignatory() { idDocument = idDocument, //HAJA Update //idSignatory = new Guid(item.id), //HAJA Update Page = item.page, X = item.x, Y = item.y, Width = item.w, Height = item.h, DateCreated = DateTime.Now }; db.DocumentSignatory.AddObject(ds); } } db.SaveChanges(); } } return Content("ok"); } catch (Exception ex) { Business.Log.Log.AppendException(ex); return Content(ex.Message); } }