//static UpsilabEntities context = new UpsilabEntities(); public static void InsertSignatureTransaction(SignatureTransaction signatureTransaction) { using (UpsilabEntities context = new UpsilabEntities()) { context.SignatureTransaction.AddObject(signatureTransaction); context.SaveChanges(); } }
public static void UpdateSignatureTransaction(SignatureTransaction signatureTransaction) { using (UpsilabEntities context = new UpsilabEntities()) { context.SignatureTransaction.Attach(signatureTransaction); context.ObjectStateManager.ChangeObjectState(signatureTransaction, System.Data.EntityState.Modified); context.SaveChanges(); } }
public ActionResult InsertSignatureTransaction(SignatureTransaction _SignatureTransaction) { try { _SignatureTransaction.idSignatureTransaction = GuidHelper.GenerateGuid(); _SignatureTransaction.DateCreated = DateTime.Now; _SignatureTransaction.idUserCreated = SessionManager.GetUserSession().idUser; _SignatureTransaction.Status = SignatureTransactionBL.Status.Created.ToString(); SignatureTransactionBL.InsertSignatureTransaction(_SignatureTransaction); //Créer signataire par défaut var currentUSer = SessionManager.GetUserSession(); Signatory _defaultsSignatory = new Signatory() { idSignatory = GuidHelper.GenerateGuid(), DateCreated = DateTime.Now, Email = currentUSer.UserEmail, idUser = currentUSer.idUser, Mobile = currentUSer.UserMobilePhone, Name = currentUSer.UserName, Firstname = currentUSer.UserFirstName, idSignatureTransaction = _SignatureTransaction.idSignatureTransaction }; SignatureTransactionBL.InsertSignatory(_defaultsSignatory); return Content("Ok"); } catch (Exception ex) { Business.Log.Log.AppendException(ex); return Content(ex.Message); } }
public static string GetTransactionLog(SignatureTransaction signatureTransaction, bool isConvention, out string transactionStepTitle) { var languageContent = PageLanguageHelper.GetLanguageContent("User", "Convention"); var lstStatusLogs = signatureTransaction.SignatureTransactionStatusLog.OrderBy(s => s.DateCreated).ToList(); var statusLog = string.Empty; transactionStepTitle = string.Empty; //or "Approbation" or "Signature" //1- Signé par les 2 if (signatureTransaction.Status == DocumentBL.Status.Completed.ToString()) { var sdgSignatory = signatureTransaction.Signatory.FirstOrDefault(x => x.Role == SignatoryBL.Roles.SDG.ToString()); var sdgSignatoryUser = (sdgSignatory == null) ? new Data.Model.User() : sdgSignatory.User; var cgpSignatory = signatureTransaction.Signatory.FirstOrDefault(x => x.Role == SignatoryBL.Roles.CGP.ToString()); var cgpSignatoryUser = (cgpSignatory == null) ? new Data.Model.User() : cgpSignatory.User; //Signature manuelle if (sdgSignatory.DateSignature == null) { //Get date signature from FirmInstitutionCalculatedData var latestTransactionInfos = GetLatestInfos(signatureTransaction.idFirmInstitution.Value); var signatureDate = (isConvention) ? latestTransactionInfos.ConventionDateUpdated : latestTransactionInfos.AvenantDateUpdated; statusLog += string.Format("<li>{0} {1}</li>", languageContent.GetContent("signed_on"), signatureDate.Value.ToString("dd/MM/yyyy")); } else { var sdgSignature = lstStatusLogs.Where(l => l.idDocumentStatus == 5).FirstOrDefault(); if (sdgSignature != null) { statusLog += string.Format("<li>{0}<br />{1} {2}</li>", string.Format("{0} « {1} {2} »", languageContent.GetContent("signed_by"), sdgSignatoryUser.UserName, sdgSignatoryUser.UserFirstName), languageContent.GetContent("le"), sdgSignature.DateCreated.ToString("dd/MM/yyyy")); } var cgpSignature = lstStatusLogs.Where(l => l.idDocumentStatus == 6).FirstOrDefault(); if (cgpSignature != null) { statusLog += string.Format("<li>{0}<br />{1} {2}</li>", string.Format("{0} « {1} {2} »", languageContent.GetContent("signed_by"), cgpSignatoryUser.UserName, cgpSignatoryUser.UserFirstName), languageContent.GetContent("le"), cgpSignature.DateCreated.ToString("dd/MM/yyyy")); } } transactionStepTitle = languageContent.GetContent("signatures"); } //2- En attente signature SDG - ce cas n'existe plus puisque désormais la SDG signe en premier else if (signatureTransaction.Status == DocumentBL.Status.WaitingForUserSignature.ToString()) { var cgpSignature = lstStatusLogs.Where(l => l.idDocumentStatus == 11).FirstOrDefault(); if (cgpSignature != null) { statusLog += string.Format("<li>{0}<br />{1} {2}</li>", languageContent.GetContent("signed_by_client"), languageContent.GetContent("le"), cgpSignature.DateCreated.ToString("dd/MM/yyyy")); } statusLog += string.Format("<li>{0}</li>", languageContent.GetContent("waiting_for_user_signature")); transactionStepTitle = languageContent.GetContent("signatures"); } //3- En attente signature CGP else if (signatureTransaction.Status == DocumentBL.Status.WaitingForClientSignature.ToString()) { var sdgSignature = lstStatusLogs.Where(l => l.idDocumentStatus == 9).FirstOrDefault(); var sdgSignatoryUser = signatureTransaction.Signatory.FirstOrDefault(x => x.Role == SignatoryBL.Roles.SDG.ToString()).User; if (sdgSignature != null) { statusLog += string.Format("<li>{0}<br />{1} {2}</li>", string.Format("{0} « {1} {2} »", languageContent.GetContent("signed_by"), sdgSignatoryUser.UserName, sdgSignatoryUser.UserFirstName), languageContent.GetContent("le"), sdgSignature.DateCreated.ToString("dd/MM/yyyy")); } statusLog += string.Format("<li>{0} <br />« {1} »</li>", languageContent.GetContent("waiting_for_client_signature"), signatureTransaction.FirmInstitution.FirmInstitutionName); transactionStepTitle = languageContent.GetContent("signatures"); } //4- Approuvé par le CGP else if (signatureTransaction.Status == DocumentBL.Status.Approved.ToString()) { var cgpApproval = lstStatusLogs.Where(l => l.idDocumentStatus == 10).FirstOrDefault(); if (cgpApproval != null) { statusLog += string.Format("<li>{0}<br />{1} {2}</li>", languageContent.GetContent("approved"), languageContent.GetContent("on"), cgpApproval.DateCreated.ToString("dd/MM/yyyy")); } transactionStepTitle = languageContent.GetContent("approval"); } //5- En attente approbation CGP else if (signatureTransaction.Status == DocumentBL.Status.WaitingForClientApproval.ToString()) { statusLog += string.Format("<li>{0} <br /> « {1} »</li>", languageContent.GetContent("waiting_for_client_approval"), signatureTransaction.FirmInstitution.FirmInstitutionName); transactionStepTitle = languageContent.GetContent("approval"); } //6- Rejeté par le CGP else if (signatureTransaction.Status == DocumentBL.Status.Rejected.ToString()) { var cgpApproval = lstStatusLogs.Where(l => l.idDocumentStatus == 12).FirstOrDefault(); if (cgpApproval != null) { statusLog += string.Format("<li>{0}<br />{1} {2}</li>", languageContent.GetContent("avenant_rejete"), languageContent.GetContent("on"), cgpApproval.DateCreated.ToString("dd/MM/yyyy")); } transactionStepTitle = languageContent.GetContent("approval"); } //7- Emails de rappel (cas approbation et cas signature) List<string> lstDateReminderEmails = DocumentSignatureTransactionBL.GetDatesReminderEmail(signatureTransaction); if (lstDateReminderEmails.Count > 0) { statusLog += string.Format("<li>{0}</li>", languageContent.GetContent("reminder_emails")); lstDateReminderEmails.ForEach(strDate => { statusLog += string.Format("{0} <br />", strDate); }); } return statusLog; }
public static List<string> GetDatesReminderEmail(SignatureTransaction transaction) { using (var db = new UpsilabEntities()) { var dates = new List<string>(); if (transaction != null) { //Approval or signature bool isApproval = (transaction.Status == DocumentBL.Status.WaitingForClientApproval.ToString()) ? true : false; //Champ DatesReminderEmail ? var lstDatesReminderEmail = (transaction.DatesReminderEmail != null) ? transaction.DatesReminderEmail.JsonToDatesReminderEmail() : new List<DateReminderEmail>(); var step = (isApproval) ? SignatureTransactionStep.APPROVAL.ToString().ToLower() : SignatureTransactionStep.SIGNATURE.ToString().ToLower(); var dateReminderEmail = lstDatesReminderEmail.Where(d => d.Step.ToLower() == step).FirstOrDefault(); if (dateReminderEmail != null && dateReminderEmail.Dates != null) { dates = dateReminderEmail.Dates; } } return dates; } }
public static SignatureTransaction CreateTransaction(Guid idUserCreated, Guid idFirmInstitutionCGP, SignatureTransactionType transactionType) { using (UpsilabEntities context = new UpsilabEntities()) { context.Connection.Open(); using (var dbContextTransaction = context.Connection.BeginTransaction()) { try { //1- Create transaction --------------------------------------------------------- var transaction = new SignatureTransaction { idFirmInstitution = idFirmInstitutionCGP, idSignatureTransaction = GuidHelper.GenerateGuid(), idUserCreated = idUserCreated, SignatureTransactionType = transactionType.ToString(), DateCreated = DateTime.Now, Status = DocumentBL.Status.InProgress.ToString(), DocumentsInitialized = false, }; context.SignatureTransaction.AddObject(transaction); context.SaveChanges(); //2- Signature Transaction Status ----------------------------------------------- var status = DocumentStatusBL.GetByCode(DocumentBL.Status.InProgress.ToString()); SignatureTransactionStatutBL.Add(transaction.idSignatureTransaction, status.idDocumentStatus, context); //Update status in FirmInstitutionCalculatedData var calculatedData = FirmInstitutionBL.GetCalculatedData(idFirmInstitutionCGP); if (calculatedData == null) { calculatedData = new FirmInstitutionCalculatedData() { idFirmInstitution = idFirmInstitutionCGP }; } if (transactionType == SignatureTransactionType.CONVENTION) { calculatedData.ConventionLatestStatus = DocumentBL.Status.InProgress.ToString(); } else if (transactionType == SignatureTransactionType.AVENANT) { calculatedData.AvenantLatestStatus = DocumentBL.Status.InProgress.ToString(); } FirmInstitutionBL.SaveCalculatedData(calculatedData, context); //3- Add the 4 documents automatically : CPART, CINT, CCOURT, CMD --------------- if (transactionType == SignatureTransactionType.CONVENTION) { var listDocumentTypes = GetDocumentTypes(SignatureTransactionType.CONVENTION); if (listDocumentTypes != null) DocumentBL.AddDocuments(transaction.idSignatureTransaction, listDocumentTypes, context); } //4- Create signatory ------------------------------------------------------------ //CGP var firmAdviser = FirmInstitutionAdviserBL.GetDefaultSignatory(idFirmInstitutionCGP); if (firmAdviser != null) { SignatoryBL.CreateSignatory(transaction.idSignatureTransaction, firmAdviser.User.idUser, SignatoryBL.Roles.CGP.ToString(), context); } //SDG SignatoryBL.CreateSignatory(transaction.idSignatureTransaction, idUserCreated, SignatoryBL.Roles.SDG.ToString(), context); //5- Commit transaction ---------------------------------------------------------- dbContextTransaction.Commit(); //6- Reload transaction ---------------------------------------------------------- transaction = DocumentSignatureTransactionBL.GetTransactionByCGP(idFirmInstitutionCGP, transactionType.ToString()); return transaction; } catch (Exception e) { dbContextTransaction.Rollback(); Log.Log.AppendException(e); throw new Exception("SavingError"); } } } }
public static SignatureTransaction UpdateTransactionStatus(Guid pTransactionId, DocumentBL.Status pStatus, DateTime? dateUpdated = null) { string status = pStatus.ToString(); var transaction = new SignatureTransaction(); using (UpsilabEntities context = new UpsilabEntities()) { context.Connection.Open(); using (var dbContextTransaction = context.Connection.BeginTransaction()) { try { //1- Update Transaction status transaction = context.SignatureTransaction.FirstOrDefault(x => x.idSignatureTransaction == pTransactionId); transaction.Status = status; //2- Update latest transaction status var calculatedData = FirmInstitutionBL.GetCalculatedData(transaction.idFirmInstitution.Value); if (calculatedData != null) { if (transaction.SignatureTransactionType == SignatureTransactionType.CONVENTION.ToString()) { calculatedData.ConventionLatestStatus = status; if (pStatus == DocumentBL.Status.Completed) { calculatedData.ConventionDateUpdated = (dateUpdated == null) ? DateTime.Now : dateUpdated; calculatedData.HasDataInCoffre = true; calculatedData.AvenantLatestStatus = DocumentBL.Status.Created.ToString(); //activer le bouton "Avenant" } } else if (transaction.SignatureTransactionType == SignatureTransactionType.AVENANT.ToString()) { calculatedData.AvenantLatestStatus = status; if (pStatus == DocumentBL.Status.Completed) { calculatedData.AvenantDateUpdated = (dateUpdated == null) ? DateTime.Now : dateUpdated; calculatedData.HasDataInCoffre = true; } } FirmInstitutionBL.SaveCalculatedData(calculatedData, context); } //If "InProgress", clear email de rappel ? if (pStatus == DocumentBL.Status.InProgress) { transaction.DateSignaturesObjet = null; transaction.DatesReminderEmail = null; } //Log transaction status var documentStatus = DocumentStatusBL.GetByCode(status); var signatureTransactionStatusLog = new SignatureTransactionStatusLog { DateCreated = DateTime.Now, idDocumentStatus = documentStatus.idDocumentStatus, idSignatureTransaction = pTransactionId }; context.SignatureTransactionStatusLog.AddObject(signatureTransactionStatusLog); context.SaveChanges(); // // // dbContextTransaction.Commit(); } catch (Exception e) { dbContextTransaction.Rollback(); Log.Log.AppendException(e); throw new Exception("SavingError"); } } } return transaction; }
private void SaveSignedDocumentToServer(SignatureTransaction signatureTransaction, CoffreFortViewModel coffreViewModel, HttpPostedFileBase uploadedFile) { var lstDateSignatureObjects = new List<DateSignatureObjet>(); //CGP if (!string.IsNullOrEmpty(coffreViewModel.DateSignatureCGP)) { var dateSignature = new DateSignatureObjet() { Role = SignatoryBL.Roles.CGP.ToString(), DateSignature = Convert.ToDateTime(coffreViewModel.DateSignatureCGP) }; lstDateSignatureObjects.Add(dateSignature); } //Titulaire 1 if (!string.IsNullOrEmpty(coffreViewModel.DateSignatureTitulaire1)) { var dateSignature = new DateSignatureObjet() { Role = SignatoryBL.Roles.TITULAIRE1.ToString(), DateSignature = Convert.ToDateTime(coffreViewModel.DateSignatureTitulaire1) }; lstDateSignatureObjects.Add(dateSignature); } //Titulaire 2 if (!string.IsNullOrEmpty(coffreViewModel.DateSignatureTitulaire2)) { var dateSignature = new DateSignatureObjet() { Role = SignatoryBL.Roles.TITULAIRE2.ToString(), DateSignature = Convert.ToDateTime(coffreViewModel.DateSignatureTitulaire2) }; lstDateSignatureObjects.Add(dateSignature); } if (uploadedFile != null && uploadedFile.ContentLength > 0) { var fileName = System.IO.Path.GetFileName(uploadedFile.FileName); var documentRelativePath = string.Empty; var ext = Path.GetExtension(uploadedFile.FileName); var documentFullPath = ElectronicSafeDocumentBL.BuildSubscriptionFileDocumentsPath(coffreViewModel.IdSubscriptionFile, true, out documentRelativePath); var filename = ElectronicSafeDocumentBL.BuildDocumentNameWithExtension(ElectronicSafeDocumentBL.DocumentType.SF.ToString(), coffreViewModel.IdSubscriptionFile.ToString("D8"), ext); // 1- Sauvegarde dans le repertoire // documentFullPath = documentFullPath.Replace(@"fournisseur\uploads", @"user\uploads"); string filePath = System.IO.Path.Combine(documentFullPath, filename); uploadedFile.SaveAs(filePath); // 2- Sauvegarde dans la base données de données // 2-a- table "Document" var document = DocumentBL.GetDocumentByIdSignatureTransaction(signatureTransaction.idSignatureTransaction, ElectronicSafeDocumentBL.DocumentType.SF.ToString()); document.Location = documentRelativePath; document.Name = filename; DocumentBL.UpdateDocument(document); // 2-b- table "SignatureTransaction" signatureTransaction.Status = DocumentBL.Status.Saved.ToString(); signatureTransaction.DateSignaturesObjet = lstDateSignatureObjects.DateSignatureObjectToJson(); SignatureTransactionBL.UpdateSignatureTransaction(signatureTransaction); } }
public ActionResult UploadDocumentFile(SignatureTransaction _signatureTrans, HttpPostedFileBase uploadFile) { var LanguageData = PageLanguageHelper.GetLanguageContent("User", "PDFSignature"); DocumentType docType = DocumentTypeBL.GetDocumentTypeByCode(ElectronicSafeDocumentBL.DocumentType.SIGN.ToString()); string error = string.Empty; Upsilab.Data.Model.User currentUser = SessionManager.GetUserSession(); try { if (uploadFile != null) { if (uploadFile.ContentLength > 0 && FileManager.IsPDF(uploadFile.ContentType)) { string documentPath = string.Empty; documentPath = ElectronicSafeDocumentBL.BuildUserDocumentPath(docType.DocumentNamePrefix, currentUser); if (!Directory.Exists(Server.MapPath("~/uploads"))) Directory.CreateDirectory(Server.MapPath("~/uploads")); string documentFullPath = Path.Combine(Server.MapPath("~/uploads"), documentPath); if (!Directory.Exists(documentFullPath)) Directory.CreateDirectory(documentFullPath); string filename = ElectronicSafeDocumentBL.BuildDocumentName(docType.DocumentNamePrefix, currentUser.idUser, uploadFile.FileName); // 1- Sauvegarde dans le repertoire string filePath = System.IO.Path.Combine(documentFullPath, filename); uploadFile.SaveAs(filePath); // 2 - Sauvegarde dans la table Document PdfReader pdfReader = new PdfReader(filePath); int numberOfPages = pdfReader.NumberOfPages; Document newDoc = new Document(); newDoc.idDocument = GuidHelper.GenerateGuid(); newDoc.DocumentType = docType.ToString().ToUpper(); newDoc.idSignatureTransaction = _signatureTrans.idSignatureTransaction; newDoc.Name = filename; newDoc.Location = documentPath; newDoc.PageCount = numberOfPages; newDoc.DateCreated = DateTime.Now; SignatureTransactionBL.InsertDocument(newDoc); } else { ViewBag.DocumentError = ViewBag.DocumentError + LanguageData.GetContent("fichier_pdf_requis"); } } else { ViewBag.DocumentError = ViewBag.DocumentError + LanguageData.GetContent("please_add_file"); } } catch (Exception ex) { Business.Log.Log.AppendException(ex); ViewBag.DocumentError = ViewBag.DocumentError + ex.Message; } return RedirectToAction("Transaction"); }