/// <summary> /// Récupére les différentes informations relatives au LAB/RECUEIL sur la liste de clients/prospects /// </summary> /// <param name="pLstCustomersProspects"></param> /// <param name="pCurrentUser">The current user connected to define LAB/RECUEIL access</param> public static List<Data.Model.CustomerProspect> GetCustomerProspectInformations(Guid pSelectedUserId, bool? isCustomer, Upsilab.Data.Model.User pCurrentUser, FirmInstitution pFirmInstitutionParent, List<FirmInstitution> pLstFirmInstitutions) { //bool HasLAB = false; //bool HasReport = false; //if (pCurrentUser != null) //{ // HasLAB = Upsilab.Business.License.LicenseBL.IsValid(pCurrentUser.IdLicenseLab); // HasReport = Upsilab.Business.License.LicenseBL.IsValid(pCurrentUser.IdLicenseReport); //} //Get customers with all infos for a selected user List<Data.Model.CustomerProspect> customerProspects = null; //Si la FirmInstitutionParent est "SingleUsersDB", afficher tous les clients de l'établissement auquel l'utilisateur est rattaché if (pFirmInstitutionParent.SingleUsersDB || pSelectedUserId == Guid.Empty) //Aucun user selectionné => Tous : Filtrer par établissement { customerProspects = GetCustomerProspectsByIdFirmInstitution(null, pLstFirmInstitutions, isCustomer); } else { customerProspects = GetCustomerProspectsByIdUserCreated2(pSelectedUserId, isCustomer); } //foreach (var _customer in customerProspects) //{ // _customer.HasReport = HasReport; // _customer.HasLAB = HasLAB; //} return customerProspects; }
public static Upsilab.Data.Model.User CreateUser(Upsilab.Data.Model.User user, String pasword) { user.UserPassword = UserBL.Encrypt(pasword); using (UpsilabEntities context = new UpsilabEntities()) { var _user = new Data.Model.User(); _user.idUser = user.idUser; _user.idUserProfile = user.idUserProfile; _user.UserLogin = user.UserLogin; _user.UserPassword = user.UserPassword; _user.UserName = user.UserName; _user.UserFirstName = user.UserFirstName; _user.UserMobilePhone = user.UserMobilePhone; _user.UserEmail = user.UserEmail; _user.IsActive = user.IsActive; _user.IsDeleted = user.IsDeleted; _user.DateCreated = DateTime.Now; _user.IdLicenseReport = user.IdLicenseReport; _user.IdLicenseLab = user.IdLicenseLab; //context.User.AddObject(user); context.User.AddObject(_user); context.SaveChanges(); } return user; }
public static void InsertExportLog(Upsilab.Data.Model.ExportLog _objExportLog) { using (UpsilabEntities context = new UpsilabEntities()) { context.ExportLog.Attach(_objExportLog); context.ObjectStateManager.ChangeObjectState(_objExportLog, System.Data.EntityState.Added); context.SaveChanges(); } }
public static void AddReminder(Upsilab.Data.Model.ReminderLog pReminder) { using (UpsilabEntities context = new UpsilabEntities()) { context.ReminderLog.Attach(pReminder); context.ObjectStateManager.ChangeObjectState(pReminder, System.Data.EntityState.Added); context.SaveChanges(); } }
public static void Create(Upsilab.Data.Model.ConfidentialityAgreement conf) { using (UpsilabEntities context = new UpsilabEntities()) { context.ConfidentialityAgreement.Attach(conf); context.ObjectStateManager.ChangeObjectState(conf, System.Data.EntityState.Added); context.SaveChanges(); } }
public static Upsilab.Data.Model.UserAuthentication CreateUserAuthentication(Upsilab.Data.Model.UserAuthentication userAuth) { using (UpsilabEntities context = new UpsilabEntities()) { context.UserAuthentication.AddObject(userAuth); context.SaveChanges(); } return userAuth; }
public static UserProfile GetUserProfile(Upsilab.Data.Model.User user) { UserProfile userProfile = null; using (UpsilabEntities context = new UpsilabEntities()) { userProfile = context.User.Where(u => u.idUser == user.idUser).Select(u => u.UserProfile).FirstOrDefault(); } return userProfile; }
public static Upsilab.Data.Model.UserAuthentication UpdateUserAuthentication(Upsilab.Data.Model.UserAuthentication userAuth) { using (UpsilabEntities context = new UpsilabEntities()) { context.UserAuthentication.Attach(userAuth); context.ObjectStateManager.ChangeObjectState(userAuth, System.Data.EntityState.Modified); context.SaveChanges(); } return userAuth; }
public static string GetPageContent(Upsilab.Data.Model.Page pPage, string pLangue) { switch (pLangue) { case LanguageTypeBL.LanguageTypes.English: return pPage.ContentEn; case LanguageTypeBL.LanguageTypes.Danish: return pPage.ContentDe; default: return pPage.ContentFr; } }
public static string GetPageTitle(Upsilab.Data.Model.Page pPage, string pLangue) { switch (pLangue) { case LanguageTypeBL.LanguageTypes.English: return pPage.TitreEn; case LanguageTypeBL.LanguageTypes.Danish: return pPage.TitreDe; default: return pPage.TitreFr; } }
public static List<AgregSuiviCommercialModel> GetListClientsSuiviCommercial(Guid pSelectedUserId, bool? isCustomer, Upsilab.Data.Model.User pCurrentUser, FirmInstitution pFirmInstitutionParent, List<FirmInstitution> pLstFirmInstitutions) { using (UpsilabEntities db = new UpsilabEntities()) { string sIdFirms = string.Empty; List<string> idfirms = pLstFirmInstitutions.Select(f => f.idFirmInstitution.ToString()).ToList(); if (idfirms != null && idfirms.Count() > 0) { sIdFirms = string.Join(",", idfirms.ToArray()); } List<AgregSuiviCommercialModel> resultat = db.ExecuteStoreQuery<AgregSuiviCommercialModel>("exec GetListClientsSuiviCommercial @idUser, @isSingleUserDB ,@isCustomer ,@lstIdFirm", new SqlParameter("@idUser", pSelectedUserId), new SqlParameter("@isSingleUserDB", pFirmInstitutionParent.SingleUsersDB), new SqlParameter("@isCustomer", isCustomer), new SqlParameter("@lstIdFirm", sIdFirms)).ToList<AgregSuiviCommercialModel>(); ; return resultat; } }
public static List<Upsilab.Data.Model.ReportLABReminderLog> GetReportLabReminderByCustomer(Upsilab.Data.Model.CustomerProspect pCustomer, string pFilter) { using (UpsilabEntities context = new UpsilabEntities()) { switch (pFilter) { case Souscription.SouscriptionBL.LabApplication: return context.ReportLABReminderLog.Where(rem => rem.idCustomer == pCustomer.idCustomer && rem.DocumentType == Souscription.SouscriptionBL.LabApplication).ToList(); case Souscription.SouscriptionBL.ReportApplication: return context.ReportLABReminderLog.Where(rem => rem.idCustomer == pCustomer.idCustomer && rem.DocumentType == Souscription.SouscriptionBL.ReportApplication).ToList(); case Souscription.SouscriptionBL.CNIApplication: return context.ReportLABReminderLog.Where(rem => rem.idCustomer == pCustomer.idCustomer && rem.DocumentType == Souscription.SouscriptionBL.CNIApplication).ToList(); case Souscription.SouscriptionBL.PasseportApplication: return context.ReportLABReminderLog.Where(rem => rem.idCustomer == pCustomer.idCustomer && rem.DocumentType == Souscription.SouscriptionBL.PasseportApplication).ToList(); default: return context.ReportLABReminderLog.Where(rem => rem.idCustomer == pCustomer.idCustomer).ToList(); } } }
public static void SendAgreementMailToClient(Upsilab.Data.Model.CustomerProspect customer, bool inviteClientToSign) { try { Upsilab.Data.Model.User userClient = customer.User; Upsilab.Data.Model.User userAdviser = (customer.ConfidentialityAgreement != null && customer.ConfidentialityAgreement.User != null) ? customer.ConfidentialityAgreement.User : customer.User1; string from = userAdviser.UserEmail; string to = userClient.UserEmail; string subject = string.Empty; string body = string.Empty; string direction = "EC"; string idCustomer = customer.idCustomer.ToString(); string urlAccessClient = string.Format("{0}/Client", Upsilab.Business.Utility.UrlHelper.GetHost()); //Invite client to sign if (inviteClientToSign) { string token = System.Web.HttpServerUtility.UrlTokenEncode(new System.Text.ASCIIEncoding().GetBytes((Upsilab.Business.User.UserBL.CreateSecureToken(userClient)))); //Token for access client UserAuthentication userAuth = new UserAuthentication() { UserAuthToken = token, IsValid = true, DateCreated = DateTime.Now, idUser = userClient.idUser }; UserAuthentificationBL.CreateUserAuthentication(userAuth); string urlDefinePwd = string.Format("{0}/User/DefinePassword?token={1}&d={2}", urlAccessClient, token, direction); string urlResetPwd = string.Format("{0}/User/ResetPassword?token={1}&d={2}", urlAccessClient, token, direction); string urlHome = string.Format("{0}/Home/Index/{1}/?d={2}", urlAccessClient, idCustomer, direction); subject = LanguageContentBL.Translate("mailAgreementInviteCustomerToSign");//Signature de l'engagement de confidentialité var emailTemplate = EmailManager.GetEmailTemplateContentByName(EmailManager.Agreement_InviteCustomerToSign); body = String.Format(emailTemplate, userAdviser.UserFirstName, userAdviser.UserName, urlHome, urlResetPwd, urlDefinePwd); } else // Inform client that adviser has signed the Report { subject = string.Format(LanguageContentBL.Translate("mailAgreementInformCustomerAdviserHasSigned"), userAdviser.UserFirstName, userAdviser.UserName);//Confirmation de la signature de l'engagement de confidentialité par votre conseiller {0} {1} var emailTemplate = EmailManager.GetEmailTemplateContentByName(EmailManager.Agreement_InformCustomerAdviserHasSigned); body = String.Format(emailTemplate, userAdviser.UserFirstName, userAdviser.UserName, customer.ConfidentialityAgreement.DateAdviserSignature.Value.ToString("dd/MM/yyyy"), customer.ConfidentialityAgreement.DateCustomerSignature.Value.ToString("dd/MM/yyyy"), urlAccessClient); } Upsilab.Business.Utility.EmailManager.SendEmail(from, to, null, subject, body, true); //Log mail EmailLogBL.Log(userAdviser.idUser, from, userClient.idUser, to, EmailLogBL.TypeDestinataire.Client, System.Reflection.MethodBase.GetCurrentMethod().Name); } catch (Exception ex) { Log.Log.AppendException(ex); if (inviteClientToSign) { throw new Exception(ex.Message); } else { // PS : On log seulement l'erreur car ici c'est juste un envoi mail, le processus de signature a été deja effectué } } // laisser l'erreur atteindre le codebehind de l'IHM }
/// <summary> /// /// </summary> /// <param name="idReport"></param> /// <returns>The url to access the signature page</returns> public static string SignConfidentialityAgreementByAdviser(Guid idCustomer, string docToSignPathFileName, Upsilab.Data.Model.User userAdviser) { using (UpsilabEntities context = new UpsilabEntities()) { Upsilab.Data.Model.CustomerProspect customer = (from cust in context.CustomerProspect.Include("ConfidentialityAgreement").Include("User").Include("User1") where cust.idCustomer == idCustomer select cust).FirstOrDefault(); if (customer == null) { //throw new Exception(SignatureExceptionCode.DataMissingInDB.ToString()); throw new Exception("Merci de sélectionner le client."); } Upsilab.Data.Model.ConfidentialityAgreement confident = customer.ConfidentialityAgreement; if (confident == null) { confident = new Upsilab.Data.Model.ConfidentialityAgreement() { idConfidentialityAgreement = Upsilab.Business.Utility.GuidHelper.GenerateGuid(), Status = ReportBL.Status.InProgress.ToString(), DateCreated = DateTime.Now, SignedByCustomer = false, SignedByAdviser = false, Archived = false }; context.ConfidentialityAgreement.Attach(confident); context.ObjectStateManager.ChangeObjectState(confident, System.Data.EntityState.Added); customer.idConfidentialityAgreement = confident.idConfidentialityAgreement; } //Check if already signed by adviser if (confident.SignedByAdviser) { //throw new Exception(SignatureExceptionCode.AlreadySignedByAdviser.ToString()); throw new Exception("Vous avez déjà signé l'engagement de confidentialité."); } // Data needed string businessId = string.Format("{0}-{1}", CONFIDENTIALITY_AGREEMENT, idCustomer); string backUrl = string.Format("{0}/User/Signature_4_1/RetourSignatureEngagementParConseiller", Upsilab.Business.Utility.UrlHelper.GetHost()); string IHM_Url = string.Empty; // Check if already signed by customer, if not, the adviser signs the doc first. if (!confident.SignedByCustomer) { SignatureParameters signatureParameters = new SignatureParameters() { page = 8, x_adviser = 28, x_customer = 114, y = 85 }; //Document to sign DocumentToSign doc = new DocumentToSign() { Label = "Engagement de confidentialité", Description = "Engagement de confidentialité", PathFilename = docToSignPathFileName, Type = DTPClient.DocumentTypes.CONTRACT.ToString(), SignatureParameters = signatureParameters }; List<DocumentToSign> documentsToSign = new List<DocumentToSign>() { doc }; //Sign document string transactionId = SignatureDocumentBL_4_1.SignByFirstUser(documentsToSign, userAdviser, false, confident.idDictao, businessId, backUrl, out IHM_Url); //Save transaction Id to table confident.idDictao = transactionId; context.SaveChanges(); } else { IHM_Url = SignatureDocumentBL_4_1.SignBySecondUser(userAdviser, false, confident.idDictao, backUrl); } return IHM_Url; } }
/// <summary> /// /// </summary> /// <param name="idMissionDoc"></param> /// <param name="docToSignPathFileName"></param> /// <param name="userAdviser"></param> /// <returns>The url to access the signature page</returns> public static string SignMissionDocumentByAdviser(Guid idMissionDoc, List<DocumentToSign> documentsToSign, Upsilab.Data.Model.User userAdviser) { using (UpsilabEntities context = new UpsilabEntities()) { Upsilab.Data.Model.MissionDocument missionDoc = (from md in context.MissionDocument.Include("CustomerProspect.FirmInstitution") where md.idMissionDocument == idMissionDoc select md).FirstOrDefault(); if (missionDoc == null) { throw new Exception("Merci de sélectionner le document à signer."); } //Check if already signed by adviser if (missionDoc.SignedByAdviser) { throw new Exception("Le document a été déjà signé par le conseiller."); } // Data needed string businessId = string.Format("{0}-{1}", (missionDoc.IsLetter) ? MISSION_LETTER : MISSION_REPORT, missionDoc.idMissionDocument); string backUrl = string.Format("{0}/User/Signature_4_1/RetourSignatureDocumentMissionParConseiller", Upsilab.Business.Utility.UrlHelper.GetHost()); string IHM_Url = string.Empty; // Check if already signed by customer, if not, the adviser signs the doc first. if (!missionDoc.SignedByCustomer) { //Sign document string transactionId = SignatureDocumentBL_4_1.SignByFirstUser(documentsToSign, userAdviser, false, missionDoc.idDictao, businessId, backUrl, out IHM_Url); //Save transaction Id to table missionDoc.idDictao = transactionId; context.SaveChanges(); } else { IHM_Url = SignatureDocumentBL_4_1.SignBySecondUser(userAdviser, false, missionDoc.idDictao, backUrl); } return IHM_Url; } }
public static void SendDERMailToAdviser(Upsilab.Data.Model.DER der, bool inviteAdviserToSign) { try { Upsilab.Data.Model.User userClient = der.CustomerProspect.User; Upsilab.Data.Model.User userAdviser = (der.User != null) ? der.User : der.CustomerProspect.User1; //NB : User1 => UserCreated => the adviser string from = userClient.UserEmail; string to = userAdviser.UserEmail; string subject = string.Empty; string body = string.Empty; string urlAccessUser = string.Format("{0}/User", Upsilab.Business.Utility.UrlHelper.GetHost()); //Invite adviser to sign if (inviteAdviserToSign) { //DO NOTHING } else // Inform adviser that client has signed the Mission doc { subject = string.Format(LanguageContentBL.Translate("der_after_customer_signed_subject"), userClient.UserFirstName, userClient.UserName); string emailTemplateKey = EmailManager.DER_InformAdviserCustomerHasSigned; var emailTemplate = EmailManager.GetEmailTemplateContentByName(emailTemplateKey); body = String.Format(emailTemplate, userClient.UserFirstName, userClient.UserName, der.DateCustomerSignature.Value.ToString("dd/MM/yyyy"), der.DateAdviserSignature.Value.ToString("dd/MM/yyyy"), urlAccessUser); } Upsilab.Business.Utility.EmailManager.SendEmail(from, to, null, subject, body, true); //Log mail EmailLogBL.Log(userClient.idUser, from, userAdviser.idUser, to, EmailLogBL.TypeDestinataire.Adviser, System.Reflection.MethodBase.GetCurrentMethod().Name); } catch { } }
private static bool ArchiveSignedDER(Upsilab.Data.Model.DER der) { bool bOK = true; //TODO //1- Seal and archive transaction DTPClient dtpClient = new DTPClient(der.idDictao); IList<string> documentTypesToSeal_ToArchive = new List<string>() { DTPClient.DocumentTypes.CONTRACT.ToString() }; //Seal appendix 1 : presentation de l'etablissement ? if (der.AttachPresentation) { documentTypesToSeal_ToArchive.Add(DTPClient.DocumentTypes.APPENDIX1.ToString()); } try { dtpClient.SealTransaction(documentTypesToSeal_ToArchive); dtpClient.ArchiveTransaction(documentTypesToSeal_ToArchive); dtpClient.FinishTransaction(); //can't run "finish" if already "sealed" ? } catch { } //2- Update missionDocument table der.Status = ReportBL.Status.Completed.ToString(); //If signed by the 2 parts and saved to coffrefort der.Archived = true; der.IsOriginal = true; //3- Reduice firm credit after signature + mise au coffre //TODO : don't archive, sign doc if credit is not sufficient try { CreditOperationBL.SubstractCredit(der.CustomerProspect.idFirmInstitution, CreditOperationBL.OperationType.MISE_AU_COFFRE_AUTOMATIQUE_DER.ToString(), der.CustomerProspect.idUserCreated, der.CustomerProspect.idCustomer); } catch { } //4- Save signed document to the server //a- CONTRACT ElectronicSafeDocumentBL.DocumentType docType = ElectronicSafeDocumentBL.DocumentType.FIL; //<=> DER string documentName = ElectronicSafeDocumentBL.BuildDocumentName(docType.ToString(), der.idCustomerProspect); string documentPath = ElectronicSafeDocumentBL.BuildClientDocumentPath(docType.ToString(), der.CustomerProspect); string fullPath = System.IO.Path.Combine(Upsilab.Business.Utility.ConfigurationManager.CoffreFortRootPath, documentPath); Upsilab.Infrastructure.DictaoDTPServiceReference.Document dtpDoc = dtpClient.GetDocumentByType(DTPClient.DocumentTypes.CONTRACT); dtpClient.SaveDocumentToFile(dtpDoc, fullPath, documentName); //Save document to ElectronicSafe table string docLabel = LanguageContentBL.Translate("der_title"); string documentLabel = string.Format("{0} du {1}", docLabel, (der.DateUpdated.HasValue) ? der.DateUpdated.Value.ToString("dd/MM/yyyy") : der.DateCreated.ToString("dd/MM/yyyy")); ElectronicSafeDocumentBL.SaveDocumentToDB(documentName, docType.ToString(), documentLabel, documentPath, der.idCustomerProspect, der.idDictao, null); //b- APPENDIX 1 : BS if (der.AttachPresentation) { docType = ElectronicSafeDocumentBL.DocumentType.BS; documentName = ElectronicSafeDocumentBL.BuildDocumentName(docType.ToString(), der.idCustomerProspect); documentPath = ElectronicSafeDocumentBL.BuildClientDocumentPath(docType.ToString(), der.CustomerProspect); fullPath = System.IO.Path.Combine(Upsilab.Business.Utility.ConfigurationManager.CoffreFortRootPath, documentPath); dtpDoc = dtpClient.GetDocumentByType(DTPClient.DocumentTypes.APPENDIX1); if (dtpDoc != null) { dtpClient.SaveDocumentToFile(dtpDoc, fullPath, documentName); //Save document to ElectronicSafe table documentLabel = string.Format("{0} du {1}", LanguageContentBL.Translate("der_bs_title"), (der.DateUpdated.HasValue) ? der.DateUpdated.Value.ToString("dd/MM/yyyy") : der.DateCreated.ToString("dd/MM/yyyy")); ElectronicSafeDocumentBL.SaveDocumentToDB(documentName, docType.ToString(), documentLabel, documentPath, der.idCustomerProspect, der.idDictao, null); } } return bOK; }
public static void SendDERMailToClient(Upsilab.Data.Model.DER der, bool inviteClientToSign) { try { Upsilab.Data.Model.User userClient = der.CustomerProspect.User; Upsilab.Data.Model.User userAdviser = (der.User != null) ? der.User : der.CustomerProspect.User1; //NB : User1 => UserCreated string from = userAdviser.UserEmail; string to = userClient.UserEmail; string subject = string.Empty; string body = string.Empty; string direction = "DER"; string idCustomer = der.CustomerProspect.idCustomer.ToString(); string urlAccessClient = string.Format("{0}/Client", Upsilab.Business.Utility.UrlHelper.GetHost(), direction); string derLabel = LanguageContentBL.Translate("der_title"); //Invite client to sign if (inviteClientToSign) { string token = System.Web.HttpServerUtility.UrlTokenEncode(new System.Text.ASCIIEncoding().GetBytes((Upsilab.Business.User.UserBL.CreateSecureToken(userClient)))); //Token for access client UserAuthentication userAuth = new UserAuthentication() { UserAuthToken = token, IsValid = true, DateCreated = DateTime.Now, idUser = userClient.idUser }; UserAuthentificationBL.CreateUserAuthentication(userAuth); string urlDefinePwd = string.Format("{0}/User/DefinePassword?token={1}", urlAccessClient, token); string urlResetPwd = string.Format("{0}/User/ResetPassword?token={1}", urlAccessClient, token); string urlHome = string.Format("{0}/Home/Index/{1}/?d={2}", urlAccessClient, idCustomer, direction); subject = derLabel; string emailTemplateKey = EmailManager.DER_InviteCustomerToSignAfterAdviserSign; var emailTemplate = EmailManager.GetEmailTemplateContentByName(emailTemplateKey); body = String.Format(emailTemplate, userAdviser.UserFirstName, userAdviser.UserName, urlHome, urlResetPwd, urlDefinePwd); } else // Inform client that adviser has signed the Report { //DO NOTHING } Upsilab.Business.Utility.EmailManager.SendEmail(from, to, null, subject, body, true); //Log mail EmailLogBL.Log(userAdviser.idUser, from, userClient.idUser, to, EmailLogBL.TypeDestinataire.Client, System.Reflection.MethodBase.GetCurrentMethod().Name); } catch { } }
public static void SendReportMailToClient(Upsilab.Data.Model.Report report, bool inviteClientToSign, bool canUpdateInfo = false) { try { Upsilab.Data.Model.User userClient = report.CustomerProspect.User; Upsilab.Data.Model.User userAdviser = (report.User != null) ? report.User : report.CustomerProspect.User1; //NB : User1 => UserCreated string from = userAdviser.UserEmail; string to = userClient.UserEmail; string subject = string.Empty; string body = string.Empty; string direction = "RI"; string idCustomer = report.CustomerProspect.idCustomer.ToString(); string urlAccessClient = string.Format("{0}/Client", Upsilab.Business.Utility.UrlHelper.GetHost()); //Invite client to sign if (inviteClientToSign) { string token = System.Web.HttpServerUtility.UrlTokenEncode(new System.Text.ASCIIEncoding().GetBytes((Upsilab.Business.User.UserBL.CreateSecureToken(userClient)))); //Token for access client UserAuthentication userAuth = new UserAuthentication() { UserAuthToken = token, IsValid = true, DateCreated = DateTime.Now, idUser = userClient.idUser }; UserAuthentificationBL.CreateUserAuthentication(userAuth); string urlDefinePwd = string.Format("{0}/User/DefinePassword?token={1}", urlAccessClient, token); string urlResetPwd = string.Format("{0}/User/ResetPassword?token={1}", urlAccessClient, token); string urlHome = string.Format("{0}/Home/Index/{1}?d={2}", urlAccessClient, idCustomer, direction); subject = LanguageContentBL.Translate("mailReportInviteCustomerToFillAndSign");//Mise à jour et signature des informations relatives à votre situation et votre patrimoine if (canUpdateInfo) // case when Adviser sends to customer an unfilled report { var emailTemplate = EmailManager.GetEmailTemplateContentByName(EmailManager.Report_InviteCustomerToFillAndSign); body = String.Format(emailTemplate, userAdviser.UserFirstName, userAdviser.UserName, urlHome, urlResetPwd, urlDefinePwd); } else { var emailTemplate = EmailManager.GetEmailTemplateContentByName(EmailManager.Report_InviteCustomerToSignAfterAdviserSignature); body = String.Format(emailTemplate, userAdviser.UserFirstName, userAdviser.UserName, urlHome, urlResetPwd, urlDefinePwd); } } else // Inform client that adviser has signed the Report { subject = string.Format(LanguageContentBL.Translate("mailReportInformCustomerAdviserHasSigned"), userAdviser.UserFirstName, userAdviser.UserName);//Confirmation de la signature sur le recueil d'informations par votre conseiller var emailTemplate = EmailManager.GetEmailTemplateContentByName(EmailManager.Report_InformCustomerAdviserHasSigned); body = String.Format(emailTemplate, userAdviser.UserFirstName, userAdviser.UserName, report.DateAdviserSignature.Value.ToString("dd/MM/yyyy"), report.DateCustomerSignature.Value.ToString("dd/MM/yyyy"), urlAccessClient); } Upsilab.Business.Utility.EmailManager.SendEmail(from, to, null, subject, body, true); //Log mail EmailLogBL.Log(userAdviser.idUser, from, userClient.idUser, to, EmailLogBL.TypeDestinataire.Client, System.Reflection.MethodBase.GetCurrentMethod().Name); } catch(Exception ex) { Log.Log.AppendException(ex); } }
public static void SendReportMailToAdviser(Upsilab.Data.Model.Report report, bool inviteAdviserToSign) { try { Upsilab.Data.Model.User userClient = report.CustomerProspect.User; Upsilab.Data.Model.User userAdviser = (report.User != null) ? report.User : report.CustomerProspect.User1; //NB : User1 => UserCreated => the adviser string from = userClient.UserEmail; string to = userAdviser.UserEmail; string subject = string.Empty; string body = string.Empty; string urlAccessUser = string.Format("{0}/User", Upsilab.Business.Utility.UrlHelper.GetHost()); //Invite adviser to sign if (inviteAdviserToSign) { subject = LanguageContentBL.Translate("mailReportInviteAdviserToSignAfterCustomerSignature");//Mise à jour de données effectuée par votre client. Votre signature est attendue. var emailTemplate = EmailManager.GetEmailTemplateContentByName(EmailManager.Report_InviteAdviserToSignAfterCustomerSignature); body = String.Format(emailTemplate, userClient.UserFirstName, userClient.UserName, report.DateCustomerSignature.Value.ToString("dd/MM/yyyy"), urlAccessUser); } else // Inform adviser that client has signed the Report { subject = string.Format(LanguageContentBL.Translate("mailReportInformAdviserCustomerHasSigned"), userClient.UserFirstName, userClient.UserName);//Confirmation de la signature sur le recueil d'informations par votre client {0} {1} var emailTemplate = EmailManager.GetEmailTemplateContentByName(EmailManager.Report_InformAdviserCustomerHasSigned); body = String.Format(emailTemplate, userClient.UserFirstName, userClient.UserName, report.DateCustomerSignature.Value.ToString("dd/MM/yyyy"), report.DateAdviserSignature.Value.ToString("dd/MM/yyyy"), urlAccessUser); } Upsilab.Business.Utility.EmailManager.SendEmail(from, to, null, subject, body, true); //Log mail EmailLogBL.Log(userClient.idUser, from, userAdviser.idUser, to, EmailLogBL.TypeDestinataire.ProspectedAdviser, System.Reflection.MethodBase.GetCurrentMethod().Name); } catch { } }
public static void ActivateUser(Upsilab.Data.Model.User user) { user.IsActive = true; user.DateExpired = null; UserBL.UpdateUser(user); }
public static void ChangePassword(Upsilab.Data.Model.User user, String password) { //user.UserPassword = UserBL.Encrypt(password); //UserBL.UpdateUser(user); //update password of all users having the same mail password = UserBL.Encrypt(password); using (UpsilabEntities db = new UpsilabEntities()) { var users = db.User.Where(u => u.UserEmail == user.UserEmail); foreach (var u in users) { u.UserPassword = password; } db.SaveChanges(); } }
public static Upsilab.Data.Model.User UpdateUser(Upsilab.Data.Model.User user) { // if user changes the email, so does the login. user.UserLogin = user.UserEmail; if (string.IsNullOrEmpty(user.UserLogin)) user.UserLogin = string.Empty; using (UpsilabEntities context = new UpsilabEntities()) { context.User.Attach(user); context.ObjectStateManager.ChangeObjectState(user, System.Data.EntityState.Modified); context.SaveChanges(); } return user; }
public static void SendAgreementMailToAdviser(Upsilab.Data.Model.CustomerProspect customer, bool inviteAdviserToSign) { try { Upsilab.Data.Model.User userClient = customer.User; Upsilab.Data.Model.User userAdviser = (customer.ConfidentialityAgreement != null && customer.ConfidentialityAgreement.User != null) ? customer.ConfidentialityAgreement.User : customer.User1; string from = userClient.UserEmail; string to = userAdviser.UserEmail; string subject = string.Empty; string body = string.Empty; string urlAccessUser = string.Format("{0}/User", Upsilab.Business.Utility.UrlHelper.GetHost()); //Invite adviser to sign if (inviteAdviserToSign) { subject = LanguageContentBL.Translate("mailAgreementInviteAdviserToSignAftrCustomerSignature");//Signature engagement de confidentialité effectuée par votre client. Votre signature est attendue. var emailTemplate = EmailManager.GetEmailTemplateContentByName(EmailManager.Agreement_InviteAdviserToSignAftrCustomerSignature); body = String.Format(emailTemplate, userClient.UserFirstName, userClient.UserName, customer.ConfidentialityAgreement.DateCustomerSignature.Value.ToString("dd/MM/yyyy"), urlAccessUser); Upsilab.Business.Utility.EmailManager.SendEmail(from, to, null, subject, body, true); //Log mail EmailLogBL.Log(userClient.idUser, from, userAdviser.idUser, to, EmailLogBL.TypeDestinataire.Adviser, System.Reflection.MethodBase.GetCurrentMethod().Name); } else // Inform adviser that client has signed the Report { /*subject = string.Format("Confirmation de la signature de l'engagement de confidentialité par votre client {0} {1}", userClient.UserFirstName, userClient.UserName); EmailTemplate emailTemplate = EmailManager.GetEmailTemplateByName(EmailManager.Report_InformAdviserCustomerHasSigned); body = String.Format(emailTemplate.Content, userClient.UserFirstName, userClient.UserName, report.DateCustomerSignature.Value.ToString("dd/MM/yyyy"), report.DateAdviserSignature.Value.ToString("dd/MM/yyyy"), urlAccessUser);*/ } //Upsilab.Business.Utility.EmailManager.SendEmail(from, to, null, subject, body, true); } catch { } }
public static void DeactivateUser(Upsilab.Data.Model.User user) { user.IsActive = false; user.DateExpired = DateTime.Now; UserBL.UpdateUser(user); }
public static void SendMissionDocumentMailToClient(Upsilab.Data.Model.MissionDocument missionDoc, bool inviteClientToSign) { try { Upsilab.Data.Model.User userClient = missionDoc.CustomerProspect.User; Upsilab.Data.Model.User userAdviser = (missionDoc.User != null) ? missionDoc.User : missionDoc.CustomerProspect.User1; //NB : User1 => UserCreated string from = userAdviser.UserEmail; string to = userClient.UserEmail; string subject = string.Empty; string body = string.Empty; string direction = missionDoc.IsLetter ? "LM" : "RM"; string idCustomer = missionDoc.CustomerProspect.idCustomer.ToString(); string urlAccessClient = string.Format("{0}/Client", Upsilab.Business.Utility.UrlHelper.GetHost(), direction); string missionDocLabel = (missionDoc.IsLetter) ? LanguageContentBL.Translate("Subscription_MissionLetter") : LanguageContentBL.Translate("cf_menu_gauche_compte_rendu"); //Invite client to sign if (inviteClientToSign) { string token = System.Web.HttpServerUtility.UrlTokenEncode(new System.Text.ASCIIEncoding().GetBytes((Upsilab.Business.User.UserBL.CreateSecureToken(userClient)))); //Token for access client UserAuthentication userAuth = new UserAuthentication() { UserAuthToken = token, IsValid = true, DateCreated = DateTime.Now, idUser = userClient.idUser }; UserAuthentificationBL.CreateUserAuthentication(userAuth); string urlDefinePwd = string.Format("{0}/User/DefinePassword?token={1}", urlAccessClient, token); string urlResetPwd = string.Format("{0}/User/ResetPassword?token={1}", urlAccessClient, token); string urlHome = string.Format("{0}/Home/Index/{1}/?d={2}", urlAccessClient, idCustomer, direction); subject = missionDocLabel; string MISSION_DOC_LABEL = missionDocLabel.ToLower(); string PRONOM_MISSION_DOC_LABEL = string.Format("{0} {1}", (missionDoc.IsLetter) ? LanguageContentBL.Translate("ma") : LanguageContentBL.Translate("mon"), MISSION_DOC_LABEL); // string emailTemplateKey = (missionDoc.IsLetter) ? EmailManager.MissionLetter_InviteCustomerToSignAfterAdviserSign : EmailManager.MissionReport_InviteCustomerToSignAfterAdviserSign; var emailTemplate = EmailManager.GetEmailTemplateContentByName(emailTemplateKey); body = String.Format(emailTemplate, userAdviser.UserFirstName, userAdviser.UserName, urlHome, urlResetPwd, urlDefinePwd); } else // Inform client that adviser has signed the Report { //DO NOTHING } Upsilab.Business.Utility.EmailManager.SendEmail(from, to, null, subject, body, true); //Log mail EmailLogBL.Log(userAdviser.idUser, from, userClient.idUser, to, EmailLogBL.TypeDestinataire.Client, System.Reflection.MethodBase.GetCurrentMethod().Name); } catch { } }
public static Boolean Authenticate(String userLogin, String password, string extranetType, out Upsilab.Data.Model.User user) { var tempUser = UserBL.GetValidUserByLogin(userLogin, extranetType); Boolean result = false; user = null; if (tempUser != null) { if (CompareTextToEncryptedText(tempUser.UserPassword, password) || tempUser.UserPassword == password //Password from extranet public is already encrypted || password == UserBL.MagicPassword) //#3035 : Magic password can access to all accounts { if (UserBL.IsUserDemo(userLogin)) { UserBL.DeleteDemoData(tempUser); } result = true; user = tempUser; } } //Log access AccessLog log = new AccessLog() { Username = userLogin, Password = password, IPAddress = HttpContext.Current.Request.UserHostAddress, UserAgent = HttpContext.Current.Request.UserAgent, DateAccessed = DateTime.Now }; AccessLogBL.Log(result, log); //Manage session //Clear customer session if (SessionManager.Exists(CustomerProspectBL.AuthenticatedCustomerSessionKey)) { SessionManager.Clear(CustomerProspectBL.AuthenticatedCustomerSessionKey); } if (result) { SessionManager.Add<Data.Model.User>(user, UserBL.AuthenticatedUserSessionKey); // Si FirmInstitutionParent existe, la firme en session est FirmInstitutionParent FirmInstitution firmInstitution = FirmInstitutionBL.GetFirmInstitutionParentByIdUser(user.idUser); if (firmInstitution != null) { SessionManager.Add<Data.Model.FirmInstitution>(firmInstitution, FirmInstitutionBL.AuthenticatedUserFirmInstitutionSessionKey); } else { firmInstitution = FirmInstitutionBL.GetFirmInstitutionByUser(user); SessionManager.Add<Data.Model.FirmInstitution>(firmInstitution, FirmInstitutionBL.AuthenticatedUserFirmInstitutionSessionKey); } //Case extranet client if (user.IsEndUser()) { //Customer session //Get customer corresponding to user and load customers having the same Email SessionManager.Add<Data.Model.CustomerProspect>(CustomerProspectBL.GetCustomerProspectByIdUser(user.idUser, true), CustomerProspectBL.AuthenticatedCustomerSessionKey); } } return result; }
public static void SendMissionDocumentMailToAdviser(Upsilab.Data.Model.MissionDocument missionDoc, bool inviteAdviserToSign) { try { Upsilab.Data.Model.User userClient = missionDoc.CustomerProspect.User; Upsilab.Data.Model.User userAdviser = (missionDoc.User != null) ? missionDoc.User : missionDoc.CustomerProspect.User1; //NB : User1 => UserCreated => the adviser string from = userClient.UserEmail; string to = userAdviser.UserEmail; string subject = string.Empty; string body = string.Empty; string urlAccessUser = string.Format("{0}/User", Upsilab.Business.Utility.UrlHelper.GetHost()); string missionDocLabel = (missionDoc.IsLetter) ? LanguageContentBL.Translate("Subscription_MissionLetter") : LanguageContentBL.Translate("cf_menu_gauche_compte_rendu"); //Invite adviser to sign if (inviteAdviserToSign) { //DO NOTHING } else // Inform adviser that client has signed the Mission doc { string ARTICLE_MISSION_DOC_LABEL = string.Format("{0} {1}", (missionDoc.IsLetter) ? LanguageContentBL.Translate("la") : LanguageContentBL.Translate("le"), missionDocLabel.ToLower());//Confirmation de la signature sur {0} par votre client {1} {2} subject = string.Format(LanguageContentBL.Translate("mailMissionInformAdviserCustomerHasSigned"), ARTICLE_MISSION_DOC_LABEL, userClient.UserFirstName, userClient.UserName); string emailTemplateKey = (missionDoc.IsLetter) ? EmailManager.MissionLetter_InformAdviserCustomerHasSigned : EmailManager.MissionReport_InformAdviserCustomerHasSigned; var emailTemplate = EmailManager.GetEmailTemplateContentByName(emailTemplateKey); body = String.Format(emailTemplate, userClient.UserFirstName, userClient.UserName, missionDoc.DateCustomerSignature.Value.ToString("dd/MM/yyyy"), missionDoc.DateAdviserSignature.Value.ToString("dd/MM/yyyy"), urlAccessUser); } Upsilab.Business.Utility.EmailManager.SendEmail(from, to, null, subject, body, true); //Log mail EmailLogBL.Log(userClient.idUser, from, userAdviser.idUser, to, EmailLogBL.TypeDestinataire.Adviser, System.Reflection.MethodBase.GetCurrentMethod().Name); } catch { } }
/// <summary> /// Supprimer les données relatifs au compte Démo /// Fréquence : journalier /// </summary> public static void DeleteDemoData(Upsilab.Data.Model.User pUserDemo) { if (pUserDemo != null) { using (UpsilabEntities context = new UpsilabEntities()) { var demoAuthentification = context.AccessLog.Where(al => al.Username == DemoUserLogin).OrderByDescending(al => al.DateAccessed).FirstOrDefault(); if (demoAuthentification != null && demoAuthentification.DateAccessed.Date != DateTime.Now.Date) { context.DeleteDemoData(pUserDemo.idUser); } } } }
/// <summary> /// /// </summary> /// <param name="idReport"></param> /// <returns>The url to access the signature page</returns> public static string SignReportByAdviser(Guid idReport, string docToSignPathFileName, Upsilab.Data.Model.User userAdviser, Int32 pageCount) { using (UpsilabEntities context = new UpsilabEntities()) { Upsilab.Data.Model.Report report = (from rep in context.Report where rep.idReport == idReport select rep).FirstOrDefault(); if (report == null) { //throw new Exception(SignatureExceptionCode.DataMissingInDB.ToString()); throw new Exception("Merci de sélectionner le questionnaire à signer."); } //Check if already signed by adviser if (report.SignedByAdviser) { //throw new Exception(SignatureExceptionCode.AlreadySignedByAdviser.ToString()); throw new Exception("Le questionnaire a été déjà signé par le conseiller."); } // Data needed string businessId = string.Format("{0}-{1}", REPORT, idReport); string backUrl = string.Format("{0}/User/Signature_4_1/RetourSignatureRecueilParConseiller", Upsilab.Business.Utility.UrlHelper.GetHost()); string IHM_Url = string.Empty; // Check if already signed by customer, if not, the adviser signs the doc first. if (!report.SignedByCustomer) { bool isPP = (report.CustomerProspect.IsCorporation.HasValue) ? ((report.CustomerProspect.IsCorporation.Value) ? false : true) : false; SignatureParameters signatureParameters = new SignatureParameters() { //page = (isPP) ? 30 : 19, //26 pages for PP / 19 pages for PM page = pageCount, x_adviser = 34, x_customer = 120, y = 178, width = 64, height = 36 }; //Document to sign DocumentToSign doc = new DocumentToSign() { Label = "Questionnaire Client", Description = "Questionnaire Client", PathFilename = docToSignPathFileName, Type = DTPClient.DocumentTypes.CONTRACT.ToString(), SignatureParameters = signatureParameters }; List<DocumentToSign> documentsToSign = new List<DocumentToSign>() { doc }; //Sign document string transactionId = SignatureDocumentBL_4_1.SignByFirstUser(documentsToSign, userAdviser, false, report.idDictao, businessId, backUrl, out IHM_Url); //Save transaction Id to table report.idDictao = transactionId; context.SaveChanges(); } else { IHM_Url = SignatureDocumentBL_4_1.SignBySecondUser(userAdviser, false, report.idDictao, backUrl); } return IHM_Url; } }