/// <summary> /// /// </summary> /// <param name="txid"></param> /// <param name="aid"></param> /// <param name="status"></param> /// <returns></returns> public static bool BackFromAdviserConfidentialityAgreementSignature(string status, string login, string offer, out string error) { bool isOk = true; error = string.Empty; try { using (UpsilabEntities context = new UpsilabEntities()) { string idUserAccess = DTPData.GetUserAccessIdByLogin(login); Upsilab.Data.Model.ConfidentialityAgreement confident = (from conf in context.ConfidentialityAgreement where conf.idDTPUserAccess == idUserAccess select conf).FirstOrDefault(); if (confident == null) { error = LanguageContentBL.Translate("signature_user_access_id_not_ok"); isOk = false; SignatureLogBL.Save(null, null, null, login, status, ElectronicSafeDocumentBL.DocumentType.EC.ToString()); } else { //Log signature SignatureLogBL.Save(confident.idConfidentialityAgreement, null, confident.idDictao, confident.idDTPUserAccess, status, ElectronicSafeDocumentBL.DocumentType.EC.ToString()); //Finish user access and delete userspace try { DTPClient dtpClient = new DTPClient(confident.idDictao); dtpClient.FinishUserAccess(idUserAccess); dtpClient.DeleteUserSpace(login); } catch { } //Check status if (status.ToUpper() == ALREADY_SIGNED) { error = GetDTPError(ALREADY_SIGNED); isOk = false; } //If OK or ALREADY_SIGNED, do database update if (status.ToUpper() == OK || status.ToUpper() == ALREADY_SIGNED) { Upsilab.Data.Model.CustomerProspect customer = (from cust in context.CustomerProspect .Include("ConfidentialityAgreement.User") .Include("FirmInstitution") .Include("User") .Include("User1") where cust.idConfidentialityAgreement == confident.idConfidentialityAgreement select cust).FirstOrDefault(); //Check if already signed by adviser if (confident.SignedByAdviser) { error = LanguageContentBL.Translate("signature_ec_signed"); isOk = false; } else { //Update report table confident.SignedByAdviser = true; confident.DateAdviserSignature = DateTime.Now; // If already signed by customer, archive document if (!confident.SignedByCustomer) { confident.Status = ReportBL.Status.WaitingForClientSignature.ToString(); //Soustraire le credit try { CreditOperationBL.SubstractCredit(customer.idFirmInstitution, CreditOperationBL.OperationType.SIGNATURE_ENGAGEMENT_CONFIDENTIALITE.ToString(), customer.idUserCreated, customer.idCustomer); } catch (Exception ex) { Log.Log.AppendException(ex); } // Send mail inviting client to sign SignatureDocumentBL.SendAgreementMailToClient(customer, true); } else { //Achive the signed document : send to coffre-fort SignatureDocumentBL.ArchiveConfidentialityAgreementSignedDocument(customer); // Send mail informing client that Adviser has signed the "Report" SignatureDocumentBL.SendAgreementMailToClient(customer, false); } context.SaveChanges(); } //end signed } else { //error = string.Format("Erreur lors de la signature (status {0})", status); error = GetDTPError(status); isOk = false; } } } //End using } catch (Exception ex) { error = ex.Message; Log.Log.AppendException(ex); isOk = false; } return isOk; }
/// <summary> /// /// </summary> /// <param name="status"></param> /// <param name="login"></param> /// <param name="offer"></param> /// <param name="error"></param> /// <returns></returns> public static bool BackFromAdviserReportSignature(string status, string login, string offer, out string error) { bool isOk = true; error = string.Empty; try { using (UpsilabEntities context = new UpsilabEntities()) { string idUserAccess = DTPData.GetUserAccessIdByLogin(login); Upsilab.Data.Model.Report report = (from rep in context.Report .Include("CustomerProspect") .Include("CustomerProspect.FirmInstitution") .Include("CustomerProspect.User") .Include("CustomerProspect.User1") where rep.idDTPUserAccess == idUserAccess select rep).FirstOrDefault(); if (report == null) { error = LanguageContentBL.Translate("signature_user_access_id_not_ok"); isOk = false; SignatureLogBL.Save(null, null, null, login, status, ElectronicSafeDocumentBL.DocumentType.RC.ToString()); } else { //Log signature SignatureLogBL.Save(report.idReport, report.idCustomerProspect, report.idDictao, report.idDTPUserAccess, status, ElectronicSafeDocumentBL.DocumentType.RC.ToString()); //Finish user access and delete userspace try { DTPClient dtpClient = new DTPClient(report.idDictao); dtpClient.FinishUserAccess(idUserAccess); dtpClient.DeleteUserSpace(login); } catch { } //Check status if (status.ToUpper() == ALREADY_SIGNED) { error = GetDTPError(ALREADY_SIGNED); isOk = false; } //If OK or ALREADY_SIGNED, do database update if (status.ToUpper() == OK || status.ToUpper() == ALREADY_SIGNED) { //Check if already signed by adviser if (report.SignedByAdviser) { error = LanguageContentBL.Translate("signature_doc_signed"); isOk = false; } else { //Update report table report.SignedByAdviser = true; report.DateAdviserSignature = DateTime.Now; // If already signed by customer, archive document if (!report.SignedByCustomer) { report.Status = ReportBL.Status.WaitingForClientSignature.ToString(); //mettre à jour le current status du customer report.CustomerProspect.CurrentReportStatus = ReportBL.Status.WaitingForClientSignature.ToString(); //Upsilab.Business.CustomerProspect.CustomerProspectBL.Update(report.CustomerProspect); //Soustraire le credit try { CreditOperationBL.SubstractCredit(report.CustomerProspect.idFirmInstitution, CreditOperationBL.OperationType.SIGNATURE_RECUEIL.ToString(), report.CustomerProspect.idUserCreated, report.CustomerProspect.idCustomer); } catch (Exception ex) { Log.Log.AppendException(ex); } // Send mail inviting client to sign SignatureDocumentBL.SendReportMailToClient(report, true); } else { //Achive the signed document : send to coffre-fort SignatureDocumentBL.ArchiveReportSignedDocument(report); //Update table CustomerProspect : DateShiftLabLast & DateShiftLabNext & Profil Upsilab.Data.Model.CustomerProspect customer = report.CustomerProspect; customer.DateUpdatedLast = DateTime.Now; customer.DateUpdatedNext = DateTime.Now.AddYears(1); customer.CurrentReportStatus = Upsilab.Business.Report.ReportBL.Status.Completed.ToString(); customer.HasCompletedReport = true; customer.IsReportOriginal = true; if (customer.NbElectronicSafeDocument.HasValue) { customer.NbElectronicSafeDocument = customer.NbElectronicSafeDocument.Value + 1; } else { customer.NbElectronicSafeDocument = 1; } customer.RiskProfile = (customer.IsCorporation.HasValue && customer.IsCorporation.Value) ? CustomerProspectBL.GetCustomerPMProfil(report) : CustomerProspectBL.GetCustomerPPProfil(report); // Send mail informing client that Adviser has signed the "Report" SignatureDocumentBL.SendReportMailToClient(report, false); } context.SaveChanges(); } } else { //error = string.Format("Erreur lors de la signature (status {0})", status); error = GetDTPError(status); isOk = false; } } } } catch (Exception ex) { error = ex.Message; Log.Log.AppendException(ex); isOk = false; } return isOk; }
/// <summary> /// /// </summary> /// <param name="txid"></param> /// <param name="aid"></param> /// <param name="status"></param> /// <returns></returns> public static bool BackFromDocumentSignature(string status, string login, string offer, out string error, out string transactionType) { bool isOk = true; error = string.Empty; transactionType = string.Empty; try { using (UpsilabEntities context = new UpsilabEntities()) { string idUserAccess = DTPData.GetUserAccessIdByLogin(login); Upsilab.Data.Model.Signatory signatory = (from sign in context.Signatory .Include("SignatureTransaction") .Include("SignatureTransaction.FirmInstitution") .Include("SignatureTransaction.Signatory") .Include("SignatureTransaction.Document") where sign.idDTPUserAccess == idUserAccess select sign).FirstOrDefault(); if (signatory == null) { error = LanguageContentBL.Translate("signature_user_access_id_not_ok"); isOk = false; SignatureLogBL.Save(null, null, null, login, status, ElectronicSafeDocumentBL.DocumentType.SIGN.ToString()); } else { //Log signature SignatureLogBL.Save(signatory.idSignatory, null, null, signatory.idDTPUserAccess, status, ElectronicSafeDocumentBL.DocumentType.SIGN.ToString()); transactionType = signatory.SignatureTransaction.SignatureTransactionType; //Finish user access and delete userspace try { DTPClient dtpClient = new DTPClient(signatory.SignatureTransaction.idDTPTransaction); dtpClient.FinishUserAccess(idUserAccess); dtpClient.DeleteUserSpace(login); } catch { } //Check status if (status.ToUpper() == ALREADY_SIGNED) { error = GetDTPError(ALREADY_SIGNED); isOk = false; } //If OK or ALREADY_SIGNED, do database update if (status.ToUpper() == OK || status.ToUpper() == ALREADY_SIGNED) { //Check if already signed by customer if (signatory.DateSignature.HasValue) { error = LanguageContentBL.Translate("signature_doc_signed"); isOk = false; } else { //Update database signatory.DateSignature = DateTime.Now; // If already signed by other signatories, archive document var signatoriesHaveNotSigned = signatory.SignatureTransaction.Signatory.Where(sign => !sign.DateSignature.HasValue).ToList(); if (signatoriesHaveNotSigned.Count > 0) //some signatories haven't sign { DocumentBL.Status docStatus = DocumentBL.Status.InProgress; if (signatory.Role == SignatoryBL.Roles.SDG.ToString()) { docStatus = DocumentBL.Status.WaitingForClientSignature; //TODO } DocumentSignatureTransactionBL.UpdateTransactionStatus(signatory.idSignatureTransaction.Value, docStatus); //TODO : Soustraire le credit try { //CreditOperationBL.SubstractCredit(report.CustomerProspect.idFirmInstitution, CreditOperationBL.OperationType.SIGNATURE_RECUEIL.ToString(), report.CustomerProspect.idUserCreated, report.CustomerProspect.idCustomer); } catch { } //Send mail inviting CGP to sign if (signatory.Role == SignatoryBL.Roles.SDG.ToString()) { //UpsideoSignature bool isConvention = signatory.SignatureTransaction.SignatureTransactionType == DocumentSignatureTransactionBL.SignatureTransactionType.CONVENTION.ToString(); SignatureDocumentBL.SendConventionMailToCGP(signatory.SignatureTransaction, isConvention); } else { //TODO : send mail for other application ? } } else { //Archive signed document (send to coffre fort) SignatureDocumentBL.ArchiveDocument(signatory.SignatureTransaction); //TODO : Send mail informing adviser that client has signed the "Report" //SignatureDocumentBL.SendReportMailToAdviser(report, false); } context.SaveChanges(); } } else { //error = string.Format("Erreur lors de la signature (status {0})", status); error = GetDTPError(status); isOk = false; } } } //End using } //End try catch (Exception ex) { error = ex.Message; Log.Log.AppendException(ex); isOk = false; } return isOk; }
/// <summary> /// /// </summary> /// <param name="txid"></param> /// <param name="aid"></param> /// <param name="status"></param> /// <returns></returns> public static bool BackFromCustomerCRTOSignature(string status, string login, string offer, out string error) { bool isOk = true; error = string.Empty; try { using (UpsilabEntities context = new UpsilabEntities()) { string idUserAccess = DTPData.GetUserAccessIdByLogin(login); Upsilab.Data.Model.ConventionRTO crto = (from conf in context.ConventionRTO .Include("User") .Include("CustomerProspect_1") .Include("CustomerProspect_1.User") .Include("CustomerProspect_1.User1") .Include("CustomerProspect_1.FirmInstitution") where conf.idDTPUserAccess == idUserAccess select conf).FirstOrDefault(); if (crto == null) { error = LanguageContentBL.Translate("signature_user_access_id_not_ok"); isOk = false; SignatureLogBL.Save(null, null, null, login, status, ElectronicSafeDocumentBL.DocumentType.CRTO.ToString()); } else { //Log signature SignatureLogBL.Save(crto.idConventionRTO, null, crto.idDictao, crto.idDTPUserAccess, status, ElectronicSafeDocumentBL.DocumentType.CRTO.ToString()); //Finish user access and delete userspace try { DTPClient dtpClient = new DTPClient(crto.idDictao); dtpClient.FinishUserAccess(idUserAccess); dtpClient.DeleteUserSpace(login); } catch { } //Check status if (status.ToUpper() == ALREADY_SIGNED) { error = GetDTPError(ALREADY_SIGNED); isOk = false; } //If OK or ALREADY_SIGNED, do database update if (status.ToUpper() == OK || status.ToUpper() == ALREADY_SIGNED) { Upsilab.Data.Model.CustomerProspect customer = crto.CustomerProspect_1; customer.CustomersUsingSameAccount = CustomerProspect.CustomerProspectBL.GetCustomersByEmail(customer.User.UserEmail); //Check if already signed by customer if (crto.SignedByCustomer) { error = LanguageContentBL.Translate("signature_crto_signed"); isOk = false; } else { //Update database crto.SignedByCustomer = true; crto.DateSignatureCustomer = DateTime.Now; //Update customer.idCRTO = latest signed CRTO customer.idConventionRTO = crto.idConventionRTO; //Archive signed document (send to coffre fort) SignatureDocumentBL.ArchiveCRTOSignedDocument(customer); // Send mail informing adviser that client has signed the "Confidentiality agreement" SignatureDocumentBL.SendCRTOMailToAdviser(customer, false); //TODO : if customer sign "Second", template mail ? context.SaveChanges(); //Update session user SessionManager.SetCustomerProspectSession(customer); } //End signed } else { //error = string.Format("Erreur lors de la signature (status {0})", status); error = GetDTPError(status); isOk = false; } } } //end using } catch (Exception ex) { error = ex.Message; Log.Log.AppendException(ex); isOk = false; } return isOk; }
/// <summary> /// /// </summary> /// <param name="txid"></param> /// <param name="aid"></param> /// <param name="status"></param> /// <returns></returns> public static bool BackFromAdviserDERSignature(string status, string login, string offer, out string error) { bool isOk = true; error = string.Empty; try { using (UpsilabEntities context = new UpsilabEntities()) { string idUserAccess = DTPData.GetUserAccessIdByLogin(login); Upsilab.Data.Model.DER derDoc = (from der in context.DER .Include("User") .Include("CustomerProspect") .Include("CustomerProspect.FirmInstitution") .Include("CustomerProspect.User") .Include("CustomerProspect.User1") where der.idDTPUserAccess == idUserAccess select der).FirstOrDefault(); if (derDoc == null) { error = LanguageContentBL.Translate("signature_user_access_id_not_ok"); isOk = false; SignatureLogBL.Save(null, null, null, login, status, ElectronicSafeDocumentBL.DocumentType.FIL.ToString()); } else { //Log signature SignatureLogBL.Save(derDoc.idDer, derDoc.idCustomerProspect, derDoc.idDictao, derDoc.idDTPUserAccess, status, ElectronicSafeDocumentBL.DocumentType.FIL.ToString()); //Finish user access and delete userspace try { DTPClient dtpClient = new DTPClient(derDoc.idDictao); dtpClient.FinishUserAccess(idUserAccess); dtpClient.DeleteUserSpace(login); } catch { } //Check status if (status.ToUpper() == ALREADY_SIGNED) { error = GetDTPError(ALREADY_SIGNED); isOk = false; } //If OK or ALREADY_SIGNED, do database update if (status.ToUpper() == OK || status.ToUpper() == ALREADY_SIGNED) { //Check if already signed by adviser if (derDoc.SignedByAdviser) { error = LanguageContentBL.Translate("signature_doc_signed"); isOk = false; } else { //Update report table derDoc.SignedByAdviser = true; derDoc.DateAdviserSignature = DateTime.Now; // If already signed by customer, archive document if (!derDoc.SignedByCustomer) { derDoc.Status = ReportBL.Status.WaitingForClientSignature.ToString(); //mettre à jour le current status du customer Upsilab.Data.Model.CustomerProspect cust = derDoc.CustomerProspect; cust.DerStatus = ReportBL.Status.WaitingForClientSignature.ToString(); //Soustraire le credit try { CreditOperationBL.SubstractCredit(derDoc.CustomerProspect.idFirmInstitution, CreditOperationBL.OperationType.SIGNATURE_DER.ToString(), derDoc.CustomerProspect.idUserCreated, derDoc.CustomerProspect.idCustomer); } catch (Exception ex) { Log.Log.AppendException(ex); } // Send mail inviting client to sign SignatureDocumentBL.SendDERMailToClient(derDoc, true); } else { //Achive the signed document : send to coffre-fort SignatureDocumentBL.ArchiveSignedDER(derDoc); //Update table CustomerProspect : DateLastUpdatedMission Upsilab.Data.Model.CustomerProspect customer = derDoc.CustomerProspect; customer.DateLastUpdateDer = DateTime.Now; customer.DerStatus = Upsilab.Business.Report.ReportBL.Status.Completed.ToString(); customer.IsDerOriginal = true; if (customer.NbElectronicSafeDocument.HasValue) customer.NbElectronicSafeDocument = customer.NbElectronicSafeDocument.Value + 1; else customer.NbElectronicSafeDocument = 1; // Send mail informing client that Adviser has signed the "Report" SignatureDocumentBL.SendDERMailToClient(derDoc, false); } context.SaveChanges(); } } else { //error = string.Format("Erreur lors de la signature (status {0})", status); error = GetDTPError(status); isOk = false; } } }//End using } catch (Exception ex) { error = ex.Message; Log.Log.AppendException(ex); isOk = false; } return isOk; }
/// <summary> /// /// </summary> /// <param name="txid"></param> /// <param name="aid"></param> /// <param name="status"></param> /// <returns></returns> public static bool BackFromCustomerMissionDocumentSignature(string status, string login, string offer, out string error) { bool isOk = true; error = string.Empty; try { using (UpsilabEntities context = new UpsilabEntities()) { string idUserAccess = DTPData.GetUserAccessIdByLogin(login); Upsilab.Data.Model.MissionDocument missionDoc = (from md in context.MissionDocument .Include("User") .Include("CustomerProspect") .Include("CustomerProspect.FirmInstitution") .Include("CustomerProspect.User") .Include("CustomerProspect.User1") where md.idDTPUserAccess == idUserAccess select md).FirstOrDefault(); if (missionDoc == null) { error = LanguageContentBL.Translate("signature_user_access_id_not_ok"); isOk = false; SignatureLogBL.Save(null, null, null, login, status, "LM/RM"); } else { //Log signature SignatureLogBL.Save(missionDoc.idMissionDocument, missionDoc.idCustomerProspect, missionDoc.idDictao, missionDoc.idDTPUserAccess, status, (missionDoc.IsLetter) ? ElectronicSafeDocumentBL.DocumentType.LM.ToString() : ElectronicSafeDocumentBL.DocumentType.RM.ToString()); //Finish user access and delete userspace try { DTPClient dtpClient = new DTPClient(missionDoc.idDictao); dtpClient.FinishUserAccess(idUserAccess); dtpClient.DeleteUserSpace(login); } catch { } //Check status if (status.ToUpper() == ALREADY_SIGNED) { error = GetDTPError(ALREADY_SIGNED); isOk = false; } //If OK or ALREADY_SIGNED, do database update if (status.ToUpper() == OK || status.ToUpper() == ALREADY_SIGNED) { //Check if already signed by customer if (missionDoc.SignedByCustomer) { error = LanguageContentBL.Translate("signature_doc_signed"); isOk = false; } else { //Update database missionDoc.SignedByCustomer = true; missionDoc.DateCustomerSignature = DateTime.Now; // If already signed by adviser, archive document if (!missionDoc.SignedByAdviser) { missionDoc.Status = ReportBL.Status.WaitingForAdviserSignature.ToString(); //mettre à jour le current status du customer Upsilab.Data.Model.CustomerProspect cust = missionDoc.CustomerProspect; if (missionDoc.IsLetter) cust.LetterStatus = ReportBL.Status.WaitingForAdviserSignature.ToString(); else cust.MissionStatus = ReportBL.Status.WaitingForAdviserSignature.ToString(); //Upsilab.Business.CustomerProspect.CustomerProspectBL.Update(cust); //Soustraire le credit try { CreditOperationBL.SubstractCredit(missionDoc.CustomerProspect.idFirmInstitution, CreditOperationBL.OperationType.SIGNATURE_DOCUMENT_MISSION.ToString(), missionDoc.CustomerProspect.idUserCreated, missionDoc.CustomerProspect.idCustomer); } catch(Exception ex) { Log.Log.AppendException(ex); } // Send mail inviting adviser to sign SignatureDocumentBL.SendMissionDocumentMailToAdviser(missionDoc, true); } else { //Archive signed document (send to coffre fort) SignatureDocumentBL.ArchiveSignedMissionDocument(missionDoc); //Update table CustomerProspect : DateLastUpdatedMission Upsilab.Data.Model.CustomerProspect customer = missionDoc.CustomerProspect; if (missionDoc.IsLetter) { customer.DateLastUpdateLetter = DateTime.Now; customer.LetterStatus = Upsilab.Business.Report.ReportBL.Status.Completed.ToString(); customer.IsLetterOriginal = true; } else { customer.DateLastUpdateMission = DateTime.Now; customer.MissionStatus = Upsilab.Business.Report.ReportBL.Status.Completed.ToString(); customer.IsMissionOriginal = true; } if (customer.NbElectronicSafeDocument.HasValue) customer.NbElectronicSafeDocument = customer.NbElectronicSafeDocument.Value + 1; else customer.NbElectronicSafeDocument = 1; //If DER (FIL) is attached to LM/RM if (missionDoc.AttachInformationCard) { customer.DerStatus = Upsilab.Business.Report.ReportBL.Status.Completed.ToString(); customer.IsDerOriginal = true; customer.DateLastUpdateDer = DateTime.Now; } //If CRTO is attached to LM/RM if (missionDoc.AttachConventionRTO.HasValue && missionDoc.AttachConventionRTO.Value) { var convention = Business.ConventionRTO.ConventionRTOBL.CreateCRTOFromMissionDocument(missionDoc); //Mise à jour idConventionRTO du client if (convention != null) { customer.idConventionRTO = convention.idConventionRTO; } } // Send mail informing adviser that client has signed the "Lettre de mission / Rapport de mission" SignatureDocumentBL.SendMissionDocumentMailToAdviser(missionDoc, false); } context.SaveChanges(); } //end else } else { //error = string.Format("Erreur lors de la signature (status {0})", status); error = GetDTPError(status); isOk = false; } } } //end using } catch (Exception ex) { error = ex.Message; isOk = false; Log.Log.AppendException(ex); } return isOk; }