コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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 });
        }
コード例 #4
0
 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();               
         }
     }
 }
コード例 #5
0
 public static void DefinirZoneSignature(DocumentSignatory docSign)
 {
     using (var db = new UpsilabEntities())
     {
         db.DocumentSignatory.AddObject(docSign);
         db.SaveChanges();
     }
 }
コード例 #6
0
        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);
            }
        }