/// <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;

        }
示例#2
0
        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;
        }
示例#9
0
        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;
            }

        }
示例#10
0
        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 { }
        }
示例#21
0
        public static void ActivateUser(Upsilab.Data.Model.User user)
        {
            user.IsActive = true;
            user.DateExpired = null;

            UserBL.UpdateUser(user);
        }
示例#22
0
        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();
            }

        }
示例#23
0
        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 { }
        }
示例#25
0
        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 { }

        }
示例#27
0
        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 { }
        }
示例#29
0
        /// <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;

            }
        }