public static void GenerateLicense(FirmInstitution pFirm, Subscription pSub) { LicenseType licLAB = LicenseTypeBL.GetLicenseTypeeByName(LicenseTypeBL.LabApplication); LicenseType licReport = LicenseTypeBL.GetLicenseTypeeByName(LicenseTypeBL.RecueilApplication); List<int> lstLicenseType = new List<int>(); List<string> lstLicensePrefixe = new List<string>(); switch (pSub.Application) { case "Lab": lstLicenseType.Add(licLAB.idLicenseType); lstLicensePrefixe.Add("L"); break; case "Recueil": lstLicenseType.Add(licReport.idLicenseType); lstLicensePrefixe.Add("R"); break; case "Recueil+Lab": lstLicenseType.Add(licLAB.idLicenseType); lstLicenseType.Add(licReport.idLicenseType); lstLicensePrefixe.Add("L"); lstLicensePrefixe.Add("R"); break; } using (UpsilabEntities context = new UpsilabEntities()) { for (int j = 0; j < lstLicenseType.Count; j++) { for (int i = 1; i <= pSub.UserCount; i++) { Upsilab.Data.Model.License li = new Data.Model.License(); li.idLicense = Guid.NewGuid(); li.DateCreated = DateTime.Now; li.DateExpired = pSub.DateExpired; li.idLicenseType = lstLicenseType[j]; li.IsValid = true; li.IdSubscription = pSub.IdSubscription; li.LicenseKey = GenerateLicenseKey(pFirm.idFirmInstitution, lstLicensePrefixe[j], pSub.DateCreated, i); context.License.AddObject(li); } } context.SaveChanges(); } }
public ActionResult UnLogiciel(string id) { var languageData = Upsilab.Business.Utility.PageLanguageHelper.GetLanguageContent("Public", "Identification"); try { List<int> lstNbUsers = new List<int>(); for (int i = 1; i <= 50; i++) lstNbUsers.Add(i); ViewBag.ListNbUsers = new SelectList(lstNbUsers); var CreditPackageList = db.CreditCost.Where(cr => cr.HostCode == Upsilab.Business.Utility.ConfigurationManager.ExtranetHostCode).ToList(); ViewBag.CreditPackageList = CreditPackageList; Dictionary<int, string> lstDuration = new Dictionary<int, string>(); for (int i = 1; i <= 5; i++) { if (i == 1) lstDuration.Add(i, string.Format("{0} {1}", i, languageData.GetContent("UP_Year"))); else lstDuration.Add(i, string.Format("{0} {1}", i, languageData.GetContent("UP_Years"))); } ViewBag.ListDuration = new SelectList(lstDuration, "Key", "Value"); Subscription souscription = new Subscription(); souscription.Application = "Recueil+Lab"; souscription.CreditNumber = CreditPackageList.Single(cred => cred.IsMostPopular).CreditNumber; if (!string.IsNullOrEmpty(id)) souscription.SponsorshipCode = id; souscription.DateCreated = DateTime.Now; souscription.DateExpired = souscription.DateCreated.AddYears(1); return View(souscription); } catch (Exception ex) { ViewBag.Info = languageData.GetContent("UP_Error") + " : " + ex.Message; return View(); } }
public ActionResult UnLogiciel(string id) { try { List<int> lstNbUsers = new List<int>(); for (int i = 1; i <= 50; i++) lstNbUsers.Add(i); ViewBag.ListNbUsers = new SelectList(lstNbUsers); var CreditPackageList = db.CreditCost.ToList(); ViewBag.CreditPackageList = CreditPackageList; Dictionary<int, string> lstDuration = new Dictionary<int, string>(); for (int i = 1; i <= 5; i++) { if (i == 1) lstDuration.Add(i, string.Format("{0} an", i)); else lstDuration.Add(i, string.Format("{0} ans", i)); } ViewBag.ListDuration = new SelectList(lstDuration, "Key", "Value"); Subscription souscription = new Subscription(); souscription.Application = "Recueil+Lab"; souscription.CreditNumber = CreditPackageList.Single(cred => cred.IsMostPopular).CreditNumber; if (!string.IsNullOrEmpty(id)) souscription.SponsorshipCode = id; souscription.DateCreated = DateTime.Now; souscription.DateExpired = souscription.DateCreated.AddYears(1); return View(souscription); } catch (Exception ex) { ViewBag.Info = "Erreur : " + ex.Message; return View(); } }
public static void UpdateLicenseDateExpired(Subscription subscription) { IList<Data.Model.License> lstLicencesToRenew = subscription.LicensesToRenew; using (Data.Model.UpsilabEntities db = new UpsilabEntities()) { foreach (Data.Model.License li in lstLicencesToRenew) { //TODO : remove from loop ? Data.Model.License license = db.License.Where(lic => lic.idLicense == li.idLicense).FirstOrDefault(); //New Expired date : take the greatest date between Expired date and current date DateTime dateExpired = DateTime.Now; int resultDate = DateTime.Compare(license.DateExpired.Value, DateTime.Now); if (resultDate <= 0) //Earlier or equal { dateExpired = DateTime.Now; } else { dateExpired = license.DateExpired.Value; } //license.DateExpired = dateExpired.AddYears(license.Subscription.Duration.Value); license.DateExpired = dateExpired.AddYears(subscription.Duration.Value); } db.SaveChanges(); } }
public static Subscription Calculate(Subscription pSouscription, IList<Data.Model.License> pLstLicenseToRenew) { pSouscription = GroupLicencesToRenewByApplicationType(pSouscription, pLstLicenseToRenew); //Application cost pSouscription.ApplicationCost = pSouscription.LicensesToRenew.Sum(lic => lic.AmountHT); pSouscription.AmountHT = pSouscription.ApplicationCost; //Reduction saisie formulaire //Sponsorship - reduction TODO decimal reduction = 0; decimal reductionPercent = 0; string status; if (SponsorshipBL.IsCodeValid(pSouscription.SponsorshipCode, out status)) { if (pSouscription.SponsorshipCode == Sponsorship.Reduction.RLC01.ToString() || pSouscription.SponsorshipCode == Sponsorship.Reduction.RLC02.ToString() || pSouscription.SponsorshipCode == Sponsorship.Reduction.RLC03.ToString() || pSouscription.SponsorshipCode == Sponsorship.Reduction.RLC04.ToString() || pSouscription.SponsorshipCode == Sponsorship.Reduction.RLC05.ToString() || pSouscription.SponsorshipCode == Sponsorship.Reduction.RLC06.ToString() || pSouscription.SponsorshipCode == Sponsorship.Reduction.RLC07.ToString() || pSouscription.SponsorshipCode == Sponsorship.Reduction.RLC08.ToString() || pSouscription.SponsorshipCode == Sponsorship.Reduction.RLC09.ToString() || pSouscription.SponsorshipCode == Sponsorship.Reduction.RLC00.ToString() ) {
private void GenerateInvoice(Subscription pSubscription, FirmInstitution pFirmInstitution) { //Génération de la facture string factName = ""; string logoPath = System.IO.Path.Combine(Server.MapPath("~/Content/images/"), "LogoUpsideoFoxit.png"); string invoicePath = ConfigurationManager.InvoicePath; if (!System.IO.Directory.Exists(invoicePath)) { System.IO.Directory.CreateDirectory(invoicePath); } SouscriptionBL.GenerateInvoiceForSubscription(pSubscription, pFirmInstitution, invoicePath, logoPath, out factName); SetSubscriptionInvoiceName(pSubscription, factName, false); // Don't save yet }
private void GenerateLicences(Subscription objSubscription) { FirmInstitution objFI = objSubscription.FirmInstitution; LicenseBL.GenerateLicense(objFI, objSubscription); }
private void SetSubscriptionAsPaid(Subscription subscription, bool bSaveChanges) { // Subscription subscription.IsPaid = true; if (bSaveChanges) { db.SaveChanges(); } }
/// <summary> /// Mise à jour de la table Sponsorship après l'utilisation de code parrainage /// </summary> private void UpdateSponsorShipState(Subscription objSubscription, bool bSaveChanges) { FirmInstitution objFirmParrain = null; // if (objSubscription != null) { // Chercher une occurence de Sponsorship dont Sponsorship.Code = au code obtenu à partir de la souscription // Si on a trouvé, on la met à jour //Sponsorship objSponsorship = SponsorshipBL.GetSponsorshipByCode(objSubscription.SponsorshipCode); Sponsorship objSponsorship = db.Sponsorship.Include("FirmInstitution1").Include("FirmInstitution1.User").Where(s => s.Code == objSubscription.SponsorshipCode).FirstOrDefault(); if (objSponsorship != null) { // Mise à jour de la table Sponsorship objSponsorship.idCustomerFilleul = objSubscription.IdFirmInstitution; objSponsorship.Assests = true; objSponsorship.ActivationDate = DateTime.Now; objSponsorship.ExpirationDate = null; #region "Mise à jour de la table sponsorship" //// Sponsorship //db.Sponsorship.Attach(objSponsorship); //db.ObjectStateManager.ChangeObjectState(objSponsorship, System.Data.EntityState.Modified); if (bSaveChanges) { db.SaveChanges(); } objFirmParrain = objSponsorship.FirmInstitution1; //Parrain #endregion #region "Envoi mail" try { // Envoi du mail après activation de code parrainage if (objFirmParrain != null) { // envoi du mail à l'administrateur de la firm if (objFirmParrain.User != null) { var template = EmailManager.GetEmailTemplateContentByName(EmailManager.SponsorshipInformParrain); string sFrom = System.Configuration.ConfigurationManager.AppSettings["EmailFrom"].ToString(); string sSujet = LanguageContentBL.Translate("mailParrainageSubject");//Activation de votre code parrainage string sMessage = string.Format(template , objSubscription.SponsorshipCode , objSponsorship.CreatedDate.ToString("dd/MM/yyyy") , objSponsorship.ReductionParrain); EmailManager.SendEmail(sFrom, objFirmParrain.User.UserEmail, null, sSujet, sMessage, true); //Log mail EmailLogBL.Log(null, sFrom, objFirmParrain.User.idUser, objFirmParrain.User.UserEmail, EmailLogBL.TypeDestinataire.ProspectedAdviser, System.Reflection.MethodBase.GetCurrentMethod().Name); /* * Lorsque le filleul utilise le code parrainage avec TypeParainage=2, envoyer un email à [email protected] indiquant que le filleul "XXXXX" (Nom prénom (e-mail)) a souscrit en utilisant le code "XXX" (code parrainage) du parrain "XXXXXX" (Nom prénom (e-mail)). */ if (objSponsorship.UseGiftAmountParrain.HasValue && objSponsorship.UseGiftAmountParrain.Value) { var templateMsgToFinaveo = EmailManager.GetEmailTemplateContentByName(EmailManager.SponsorshipInformParrainForFinaveo); string sFrom1 = System.Configuration.ConfigurationManager.AppSettings["EmailFrom"].ToString(); string sTo1 = System.Configuration.ConfigurationManager.AppSettings["EmailFrom"].ToString(); string sSujet1 = LanguageContentBL.Translate("mailCodeParrainageUsedByFilleulSubject"); //CodeParrainage utilisé par un filleul string sMessage1 = string.Format(templateMsgToFinaveo , objSponsorship.FirstnameFilleul , objSponsorship.NameFilleul , objSponsorship.EmailFilleul , objSponsorship.Code , objSponsorship.FirmInstitution1.User.UserFirstName , objSponsorship.FirmInstitution1.User.UserName , objSponsorship.FirmInstitution1.User.UserEmail ); string sCC = string.Format("{0};{1}", System.Configuration.ConfigurationManager.AppSettings["EmailArnaudLallain"].ToString(), System.Configuration.ConfigurationManager.AppSettings["EmailDavidBadihi"].ToString()); EmailManager.SendEmail(sFrom1, sTo1, sCC, sSujet1, sMessage1, true); //Log mail EmailLogBL.Log(null, sFrom1, Guid.Empty, sTo1, EmailLogBL.TypeDestinataire.Upsideo, System.Reflection.MethodBase.GetCurrentMethod().Name); } } } } catch { } #endregion } } }
/// <summary> /// Mise à jour de la table Sponsorship après l'utilisation de code parrainage /// </summary> private void UpdateSponsorShipState(Subscription objSubscription, bool bSaveChanges) { FirmInstitution objFirmParrain = null; // if (objSubscription != null) { // Chercher une occurence de Sponsorship dont Sponsorship.Code = au code obtenu à partir de la souscription // Si on a trouvé, on la met à jour Sponsorship objSponsorship = SponsorshipBL.GetSponsorshipByCode(objSubscription.SponsorshipCode); if (objSponsorship != null) { // Mise à jour de la table Sponsorship objSponsorship.idCustomerFilleul = objSubscription.IdFirmInstitution; objSponsorship.Assests = true; objSponsorship.ActivationDate = DateTime.Now; objSponsorship.ExpirationDate = null; #region "Mise à jour de la table sponsorship" // Sponsorship db.Sponsorship.Attach(objSponsorship); db.ObjectStateManager.ChangeObjectState(objSponsorship, System.Data.EntityState.Modified); if (bSaveChanges) { db.SaveChanges(); } objFirmParrain = objSponsorship.FirmInstitution1; //Parrain #endregion #region "Envoi mail" try { // Envoi du mail après activation de code parrainage if (objFirmParrain != null) { // envoi du mail à l'administrateur de la firm if (objFirmParrain.User != null) { var template = EmailManager.GetEmailTemplateContentByName(EmailManager.SponsorshipInformParrain); string sFrom = System.Configuration.ConfigurationManager.AppSettings["EmailFrom"].ToString(); string sSujet = LanguageData.GetContent("Activation_code_parrainage"); string sMessage = string.Format(template , objSubscription.SponsorshipCode , objSponsorship.CreatedDate.ToString("dd/MM/yyyy") , objSponsorship.ReductionParrain); EmailManager.SendEmail(sFrom, objFirmParrain.User.UserEmail, null, sSujet, sMessage, true); //Log mail EmailLogBL.Log(null, sFrom, objFirmParrain.User.idUser, objFirmParrain.User.UserEmail, EmailLogBL.TypeDestinataire.ProspectedAdviser, System.Reflection.MethodBase.GetCurrentMethod().Name); } } } catch { } #endregion } } }
public ActionResult AdminSouscrire(Subscription souscription) { //Subscription newSouscription = null; IDictionary<string, string> dicoRes = new Dictionary<string, string>(); dicoRes.Add("Page_title", LanguageData.GetContent("Page_title")); dicoRes.Add("Title_h1", LanguageData.GetContent("Title_h1")); dicoRes.Add("Title_h1_span", LanguageData.GetContent("Title_h1_span")); dicoRes.Add("Table_Title", LanguageData.GetContent("Table_Title_ok")); dicoRes.Add("Message", LanguageData.GetContent("Message_ok")); try { string isPaymentChecked = Request.Params["chkPaiement"]; ; DateTime datePayment; Guid idSelectedFirm; DateTime? dateUpdated = null; DateTime.TryParse(Request.Params["inputPaiement"], out datePayment); Guid.TryParse(Request.Params["SelectedFirmInstitutionId"], out idSelectedFirm); FirmInstitution f = FirmInstitutionBL.GetFirmInstitutionByIdFirmInstitution(idSelectedFirm); #region Sponsor string sIdSponsor = Request.Params["IdSponsor"].ToString(); int idSponsor; Int32.TryParse(sIdSponsor, out idSponsor); if (idSponsor != 0) { FirmInstitutionBL.UpdateFirmInstitution(f.idFirmInstitution, "FirmInstitution.IdSponsor", idSponsor.ToString()); } #endregion if (f != null) { SessionManager.Get<Subscription>(SouscriptionBL.SubscriptionSession, out souscription); //---------- //SouscriptionBL.Calculate(souscription, false, f.idFirmInstitution.ToString()); //Ne plus calculer ? prendre la valeur en session ? // souscription.IdFirmInstitution = f.idFirmInstitution; souscription.Product = SouscriptionBL.Product_Type_credits.ToString(); souscription.DateCreated = DateTime.Now; souscription.DateExpired = DateTime.Now.AddYears(1); // Si payé, on additionne avec le creditnumber déjà existant if (!string.IsNullOrEmpty(isPaymentChecked) && isPaymentChecked == "on" && datePayment != null) { // mettre a jour credit de la firm if (f != null) { var newCreditNumber = f.CreditCount + souscription.CreditNumber; FirmInstitutionBL.UpdateFirmInstitution(f.idFirmInstitution, "FirmInstitution.CreditCount", newCreditNumber.ToString()); } souscription.DateUpdate = datePayment; souscription.IsPaid = true; dateUpdated = datePayment; } SouscriptionBL.AddSubscription(souscription); #region Génération pdf //Génération de la facture string factName = ""; string logoPath = System.IO.Path.Combine(Server.MapPath("~/Content/images/"), "LogoUpsideoFoxit.png"); string invoicePath = ConfigurationManager.InvoicePath; if (!System.IO.Directory.Exists(invoicePath)) { System.IO.Directory.CreateDirectory(invoicePath); } SouscriptionBL.GenerateInvoiceForSubscription(souscription, f, invoicePath, logoPath, out factName, dateUpdated); #endregion souscription.InvoiceFilename = factName; SouscriptionBL.UpdateSubscription(souscription); //Envoi l'email au contact de facturation if (souscription.IsPaid) { //Ne plus envoyer d'email au contact facturation //souscription = SouscriptionBL.GetSubscriptionsById(souscription.IdSubscription); //load firm //SouscriptionBL.SendInvoiceMail(souscription, true); //Send to FirmIntitution Email //souscription.DateSendEmail = DateTime.Now; } SessionManager.Clear(SouscriptionBL.SubscriptionSession); } else { dicoRes["Table_Title"] = LanguageData.GetContent("Table_Title_firm_non_ok"); dicoRes["Message"] = LanguageData.GetContent("Message_firm_non_ok"); } } catch (Exception ex) { dicoRes["Table_Title"] = LanguageData.GetContent("Table_Title_non_ok"); dicoRes["Message"] = LanguageData.GetContent("Message_non_ok") + ex.Message; } dicoRes.Add("ProductType", SouscriptionBL.Product_Type_credits); TempData["DicoRetour"] = dicoRes; return RedirectToAction("Retour"); }
public PartialViewResult GetPaymentForRenewalLicenses() { var currentUser = SessionManager.GetUserSession(); //Get commerciaux List<Commercial> commercials = CommercialBL.Get(); ViewBag.Commercials = new SelectList(commercials, "Code", "Fullname"); List<License> lstLicenseToRenew = new List<License>(); if (!string.IsNullOrEmpty(Request.Params["idFirm"])) { //Parameters Guid idFirm = new Guid(Request.Params["idFirm"].ToString()); string sponsorshipCode = Request.Params["sponsorshipCode"].ToString(); int? duration = string.IsNullOrEmpty(Request.Params["duration"]) ? 0 : Convert.ToInt32(Request.Params["duration"].ToString()); lstLicenseToRenew = LicenseBL.GetLicensesToRenewByFirmId(idFirm); if (!string.IsNullOrEmpty(Request.Params["idLicense"])) { List<Guid> guidArray = Array.ConvertAll(((Request.Params["idLicense"]).ToString()).Split(','), x => new Guid(x)).ToList(); //Licences to renew checked ? lstLicenseToRenew = lstLicenseToRenew.Where(lic => guidArray.Contains(lic.idLicense)).ToList(); Subscription subscription = new Subscription() { Duration = (duration > 0) ? duration : null, IdFirmInstitution = idFirm, DateCreated = DateTime.Now, DateExpired = DateTime.Now, UserCount = 0, //depend on initial subscription SponsorshipCode = sponsorshipCode }; if (lstLicenseToRenew.Select(lt => lt.idLicenseType).Contains(1) && lstLicenseToRenew.Select(lt => lt.idLicenseType).Contains(2)) { subscription.Product = SouscriptionBL.Product_Type_renouvellement_recueil_lab; } else if (lstLicenseToRenew.Select(lt => lt.idLicenseType).Contains(1)) { subscription.Product = SouscriptionBL.Product_Type_renouvellement_lab; } else if (lstLicenseToRenew.Select(lt => lt.idLicenseType).Contains(2)) { subscription.Product = SouscriptionBL.Product_Type_renouvellement_recueil; } subscription.LicensesToRenew = lstLicenseToRenew; subscription = SouscriptionBL.Calculate(subscription); //Save subscription to session so, don't calculate again when saving ? SessionManager.Set<Subscription>(SouscriptionBL.SubscriptionSession, subscription); //Durée : Pour le superadmin, afficher la duree de souscription, permettre aussi la modif //La duree est obtenue apres execution de la fonction "Calculate" if (currentUser.IsSuperAdmin()) { var durationDefaultValue = (subscription.Duration.HasValue) ? subscription.Duration.Value : 0; ViewBag.ListDuration = GetSubcriptionDurations(durationDefaultValue); } return PartialView("SouscriptionPaiementPartial", subscription); } else { Upsilab.Data.Model.Subscription souscription = new Upsilab.Data.Model.Subscription(); return PartialView("SouscriptionPaiementPartial", souscription); } } else { Upsilab.Data.Model.Subscription souscription = new Upsilab.Data.Model.Subscription(); return PartialView("SouscriptionPaiementPartial", souscription); } }
public ActionResult UnLogiciel(Subscription souscription) { try { if (ModelState.IsValid) { switch (souscription.Application) { case "Recueil": souscription.Product = SouscriptionBL.Product_Type_Recueil; break; case "Lab": souscription.Product = SouscriptionBL.Product_Type_lab; break; case "Recueil+Lab": souscription.Product = SouscriptionBL.Product_Type_Recueil_lab.ToString(); break; } SouscriptionBL.Calculate(souscription, true); SessionManager.Set<Data.Model.Subscription>(SouscriptionBL.SubscriptionSession, souscription); return View("UnLogicielPaiement", souscription); } else { return View(souscription); } } catch (Exception ex) { Upsilab.Business.Log.Log.AppendException(ex); } return View(souscription); }
/// <summary> /// </summary> /// <param name="pSouscription"></param> /// <param name="pLstLicenseToRenew"></param> /// <returns></returns> public static Subscription GroupLicencesToRenewByApplicationType(Subscription pSouscription) { List<Data.Model.License> lstLicensesToRenew = pSouscription.LicensesToRenew; using (UpsilabEntities db = new UpsilabEntities()) { var lstInitialSubscriptionId = lstLicensesToRenew.Select(lic => lic.IdSubscription).ToList(); //Optimisation : get the initial subscriptions list corresponding to licences var lstInitialSubscriptions = db.Subscription.Where(sub => lstInitialSubscriptionId.Contains(sub.IdSubscription)).ToList(); //Extranet admin : afficher la duree initiale de souscription, si plusieurs, prendre le maximum //if (SessionManager.GetUserSession().IsSuperAdmin() && !pSouscription.Duration.HasValue) if (!pSouscription.Duration.HasValue) { int maxDuration = lstInitialSubscriptions.Max(s => s.Duration).Value; pSouscription.Duration = maxDuration; } //Get subcription for each licences foreach (var lic in lstLicensesToRenew) { if (lic.Subscription == null) { lic.Subscription = lstInitialSubscriptions.Where(sub => sub.IdSubscription == lic.IdSubscription).FirstOrDefault(); } } //Licences "Recueil+LAB" List<Data.Model.License> lstLicences_RecueilLAB = lstLicensesToRenew.Where(lic => lic.Subscription.Application == SouscriptionBL.ReportLabApplication.ToString() && lic.idLicenseType == LicenseBL.ReportId).ToList(); //Pourquoi LicenseBL.ReportId seulement : pour ne pas compter 2 fois les licences "Recueil+LAB" //Licences "Recueil" List<Data.Model.License> lstLicenses_Recueil = lstLicensesToRenew.Where(lic => lic.Subscription.Application == SouscriptionBL.ReportApplication && lic.idLicenseType == LicenseBL.ReportId).ToList(); //Licences "LAB" List<Data.Model.License> lstLicenses_LAB = lstLicensesToRenew.Where(lic => lic.Subscription.Application == SouscriptionBL.LabApplication && lic.idLicenseType == LicenseBL.LabId).ToList(); decimal applicationReportLABCost = 0; decimal applicationReportCost = 0; decimal applicationLABCost = 0; pSouscription.LicensesToRenewGroupedByApplicationType = new List<LicenceViewModel>(); //Recueil+LAB if (lstLicences_RecueilLAB.Count > 0) { applicationReportLABCost = CalculateApplicationCost(pSouscription, lstLicences_RecueilLAB, SouscriptionBL.ReportLabApplication, lstInitialSubscriptions, db); var licenceViewModel = new LicenceViewModel() { ApplicationType = SouscriptionBL.ReportLabApplication.ToString(), AmountHT = applicationReportLABCost, Licences = lstLicences_RecueilLAB }; pSouscription.LicensesToRenewGroupedByApplicationType.Add(licenceViewModel); } //Recueil if (lstLicenses_Recueil.Count > 0) { applicationReportCost = CalculateApplicationCost(pSouscription, lstLicenses_Recueil, SouscriptionBL.ReportApplication, lstInitialSubscriptions, db); var licenceViewModel = new LicenceViewModel() { ApplicationType = SouscriptionBL.ReportApplication.ToString(), AmountHT = applicationReportCost, Licences = lstLicenses_Recueil }; pSouscription.LicensesToRenewGroupedByApplicationType.Add(licenceViewModel); } //LAB if (lstLicenses_LAB.Count > 0) { applicationLABCost = CalculateApplicationCost(pSouscription, lstLicenses_LAB, SouscriptionBL.LabApplication, lstInitialSubscriptions, db); var licenceViewModel = new LicenceViewModel() { ApplicationType = SouscriptionBL.LabApplication.ToString(), AmountHT = applicationLABCost, Licences = lstLicenses_LAB }; pSouscription.LicensesToRenewGroupedByApplicationType.Add(licenceViewModel); } } return pSouscription; }
private static decimal CalculateApplicationCost(Subscription pCurrentSubscription, List<Data.Model.License> pLicenses, string applicationType, List<Subscription> pInitialSubcriptions, UpsilabEntities db) { decimal applicationCost = 0; var subscriptionCost = db.SubscriptionCost.SingleOrDefault(sub => sub.SubscriptionCostName == applicationType && pLicenses.Count >= sub.UserNumberMin && pLicenses.Count <= sub.UserNumberMax && sub.HostCode == ConfigurationManager.ExtranetHostCode); int duration = (pCurrentSubscription.Duration.HasValue && pCurrentSubscription.Duration.Value > 0) ? pCurrentSubscription.Duration.Value : 0; if (subscriptionCost != null) { foreach (Data.Model.License lic in pLicenses) { var initialSubscription = pInitialSubcriptions.Where(sub => sub.IdSubscription == lic.IdSubscription).FirstOrDefault(); //Duration : take duration choosen by user or initial subcription duration duration = (duration > 0) ? duration : initialSubscription.Duration.Value; applicationCost += subscriptionCost.SubscriptionCost1 * 12 * duration; //12 } } return applicationCost; }
public PartialViewResult SouscriptionPaiementPartial(Subscription _Subscription) { SessionManager.Clear(SouscriptionBL.SubscriptionSession); //Get commerciaux List<Commercial> commercials = CommercialBL.Get(); ViewBag.Commercials = new SelectList(commercials, "Code", "Fullname"); //Calculate montant if (_Subscription.IdFirmInstitution != null) { Guid idSelectedFirm = _Subscription.IdFirmInstitution; if (!string.IsNullOrEmpty(_Subscription.Application)) { switch (_Subscription.Application) { case "Recueil": _Subscription.Product = SouscriptionBL.Product_Type_Recueil; break; case "Lab": _Subscription.Product = SouscriptionBL.Product_Type_lab; break; case "Recueil+Lab": _Subscription.Product = SouscriptionBL.Product_Type_Recueil_lab.ToString(); break; } } _Subscription = SouscriptionBL.Calculate(_Subscription, true, idSelectedFirm.ToString()); //new firm ?? //Save subscription to session so, don't calculate again when saving ? SessionManager.Set<Subscription>(SouscriptionBL.SubscriptionSession, _Subscription); return PartialView("SouscriptionPaiementPartial", _Subscription); } else { var creditPackageList = db.CreditCost.OrderBy(c => c.CreditCost1).ToList(); Subscription souscription = new Subscription() { CreditNumber = creditPackageList.Single(cred => cred.IsMostPopular).CreditNumber, Duration = 1, DateCreated = DateTime.Now, DateExpired = DateTime.Now.AddYears(1) }; ViewBag.CreditPackageList = creditPackageList; return PartialView("SouscriptionPaiementPartial", souscription); } }
public ActionResult UnLogiciel(Subscription souscription) { try { if (ModelState.IsValid) { SouscriptionBL.Calculate(souscription, true); SessionManager.Set<Data.Model.Subscription>(SouscriptionBL.SubscriptionSession, souscription); return View("UnLogicielPaiement", souscription); } else { return View(souscription); } } catch { //Exception } return View(souscription); }
private void UpdateSessionDataToExport(Subscription updatedSubscription) { if (SessionManager.Exists(DATA_TO_EXCEL)) { IList<Subscription> listSub = null; SessionManager.Get<IList<Subscription>>(DATA_TO_EXCEL, out listSub); var subcription = listSub.Where(s => s.IdSubscription == updatedSubscription.IdSubscription).FirstOrDefault(); subcription.Commercial = updatedSubscription.Commercial; subcription.Remuneration = updatedSubscription.Remuneration; } }
private void SendMailInvoice(Subscription objSubscription) { try { SouscriptionBL.SendInvoiceMail(objSubscription, true); //Send to FirmIntitution Email } catch(Exception ex) { Log.AppendException(ex); } }
private SubscriptionModel GetSubcriptionModel(Guid idFirmInstitution) { //Data to send to view //1- Récupération des licenses existantes pour le Firm List<License> unexpiredLicences = LicenseBL.GetListUnexpiredLicensesByFirmId(idFirmInstitution); //2- Nombre utilisateurs List<int> lstNbUsers = new List<int>(); for (int i = 1; i <= 50; i++) lstNbUsers.Add(i); ViewBag.ListNbUsers = new SelectList(lstNbUsers); //3- Duree ViewBag.ListDuration = GetSubcriptionDurations(); //4- Credits list var CreditPackageList = db.CreditCost.Where(cc => cc.HostCode == Upsilab.Business.Utility.ConfigurationManager.ExtranetHostCode).ToList(); ViewBag.CreditPackageList = CreditPackageList; //5- Subscription Subscription souscription = new Subscription() { Application = "Recueil+Lab", CreditNumber = 0, DateCreated = DateTime.Now, DateExpired = DateTime.Now.AddYears(1) //TODO : why add 1 ? }; //6- List of firmparents : ne pas inclure les etablissements qui n'ont pas encore payé bool includeFirmWaitingValidation = false; List<FirmInstitution> firmInstitutionParents = FirmInstitutionBL.GetFirmInstitutionParents(includeFirmWaitingValidation); firmInstitutionParents.Insert(0, new FirmInstitution() { idFirmInstitution = Guid.Empty, FirmInstitutionName = "Sélectionner un établissement" }); //7- Subscription cost List<SubscriptionCost> subscriptionCosts = SouscriptionBL.GetSubscriptionCosts(); SubscriptionModel subscriptionModel = new SubscriptionModel() { Subscription = souscription, FirmInstitutionsParents = firmInstitutionParents, Licences = unexpiredLicences, SubscriptionCosts = subscriptionCosts, //TODO }; return subscriptionModel; }
/// <summary> /// Mise à jour de la table Sponsorship après réabonnement /// </summary> private void UpdateSponsorShipReabon(Subscription objSubscription, bool bSavechanges) { FirmInstitution objFirm = objSubscription.FirmInstitution; if (objFirm != null) { List<Sponsorship> lstSponsorship = SponsorshipBL.GetReabonCount(objFirm.idFirmInstitution); // si on trouve plus de 1 sponsorship dont assets = true et reabon = false à partir d'un idFirmInstitution // on met ReabonParrain à true et ReabonParrainDate à la date courante de ces occurences if (lstSponsorship != null && lstSponsorship.Count() >= 2) { // Mise à jour des champs foreach (var objSponsor in lstSponsorship) { objSponsor.ReabonParrain = true; objSponsor.ReabonParrainDate = DateTime.Now; // Sponsorship db.Sponsorship.Attach(objSponsor); db.ObjectStateManager.ChangeObjectState(objSponsor, System.Data.EntityState.Modified); } if (bSavechanges) { db.SaveChanges(); } } } }
public ActionResult DesCredits(string id) { var creditPackageList = db.CreditCost.Where(cr => cr.HostCode == Upsilab.Business.Utility.ConfigurationManager.ExtranetHostCode).OrderBy(c => c.CreditCost1).ToList(); Guid? idSelectedFirm = null; Subscription souscription = new Subscription() { CreditNumber = creditPackageList.Single(cred => cred.IsMostPopular).CreditNumber, Duration = 1, DateCreated = DateTime.Now, DateExpired = DateTime.Now.AddYears(1) }; ViewBag.CreditPackageList = creditPackageList; #region Seulement pour SuperAdmin // Le superAdmin peut voir toutes les souscription if (SessionManager.GetUserSession().IsSuperAdmin()) { FirmInstitution firmInstitution = null; if (!string.IsNullOrEmpty(id)) //id from dashboard { Guid idFirm = Guid.Empty; Guid.TryParse(id, out idFirm); if (idFirm != null && idFirm != Guid.Empty) { firmInstitution = FirmInstitutionBL.GetFirmInstitutionByIdFirmInstitution(idFirm); if (firmInstitution != null) { SessionManager.SetSelectedFirmInstitutionBySuperAdmin(firmInstitution); } } } else { firmInstitution = SessionManager.GetSelectedFirmInstitutionBySuperAdmin(); } if (firmInstitution != null) { idSelectedFirm = firmInstitution.idFirmInstitution; } //Ne pas inclure les etablissements qui n'ont pas encore payé bool includeFirmWaitingValidation = false; List<FirmInstitution> lstFirmeParents = FirmInstitutionBL.GetFirmInstitutionParents(includeFirmWaitingValidation); ViewBag.ListFirmInstitutionParents = new SelectList(lstFirmeParents, "idFirmInstitution", "FirmInstitutionName", idSelectedFirm); } #endregion return View(souscription); }
private void SetSubscriptionInvoiceName(Subscription pSubcription, string pInvoiceName, bool pSaveChanges) { pSubcription.InvoiceFilename = pInvoiceName; if (pSaveChanges) { db.SaveChanges(); } }
public ActionResult DesCredits(Subscription souscription) { try { if (ModelState.IsValid) { User currentUser = SessionManager.GetUserSession(); FirmInstitution firm = SessionManager.GetFirmInstitutionSession(); ; if (firm != null) { souscription.Product = SouscriptionBL.Product_Type_credits.ToString(); SouscriptionBL.Calculate(souscription, false, firm.idFirmInstitution.ToString()); // TVA or NOT if (ConfigurationManager.ExtranetHostCode == PageLanguageHelper.HostCode.BE.ToString()) { if (!string.IsNullOrEmpty(firm.NumeroTVAIntracommunautaire) && firm.NumeroTVAIntracommunautaire.StartsWith("BE-0")) { souscription.TotalAmount = souscription.AmountHT; } } SessionManager.Set<Data.Model.Subscription>(SouscriptionBL.SubscriptionSession, souscription); ViewBag.Title = LanguageData.GetContent("des_credits"); ViewBag.SelectedClass = "mt2"; //Credit #region Seulement pour SuperAdmin if (currentUser.IsSuperAdmin()) { var creditPackageList = db.CreditCost.Where(c => c.HostCode == ConfigurationManager.ExtranetHostCode).OrderBy(c => c.CreditCost1).ToList(); ViewBag.CreditPackageList = creditPackageList; Guid? selectedFirm = null; if (Request.Params["SelectedFirmInstitutionId"] != null) { string id = Request.Params["SelectedFirmInstitutionId"].ToString(); Guid idFirm = Guid.Empty; Guid.TryParse(id, out idFirm); selectedFirm = idFirm; firm = FirmInstitutionBL.GetFirmInstitutionByIdFirmInstitution(selectedFirm.Value); int idSponsor = 0; if (firm != null) { #region Sponsor string sIdSponsor = Request.Params["IdSponsor"].ToString(); Int32.TryParse(sIdSponsor, out idSponsor); if (idSponsor != 0) { firm.IdSponsor = idSponsor; } #endregion SessionManager.SetSelectedFirmInstitutionBySuperAdmin(firm); } } //Ne pas inclure les etablissements qui n'ont pas encore payé bool includeFirmWaitingValidation = false; List<FirmInstitution> lstFirmeParents = FirmInstitutionBL.GetFirmInstitutionParents(includeFirmWaitingValidation); ViewBag.ListFirmInstitutionParents = new SelectList(lstFirmeParents, "idFirmInstitution", "FirmInstitutionName", selectedFirm.Value); ViewBag.ShowSouscriptionPaiment = true; return View("DesCredits", souscription); } #endregion else { return View("SouscriptionPaiement", souscription); } } else { return RedirectToAction("Index", "Home"); } } else { return View(souscription); } } catch { } return View(souscription); }
private void SendMailInvoice(Subscription objSubscription) { try { SouscriptionBL.SendInvoiceMail(objSubscription, true); //Send to FirmIntitution Email } catch { } }
/// <summary> /// Nouvelle souscription d'un client existant /// </summary> /// <returns></returns> public ActionResult NouvelleSouscription() { try { //Vérifier que l'utilisateur connecté est un administrateur ??? User u = SessionManager.GetUserSession(); if (CanViewPage(u)) { FirmInstitution firm = SessionManager.GetFirmInstitutionSession(); if (firm != null) { //Récupération des souscriptions + Nombre de crédits dont il dispose. ViewBag.CreditNumber = firm.CreditCount; List<Subscription> lstSubscriptions = SouscriptionBL.GetActivesSubscriptionsByFirm(firm.idFirmInstitution); ViewBag.LabNumber = lstSubscriptions.Where(s => s.Application.ToLower() == "lab").Sum(s => s.UserCount); ViewBag.RecueilNumber = lstSubscriptions.Where(s => s.Application.ToLower() == "recueil").Sum(s => s.UserCount); ViewBag.RecueilPlusLabNumber = lstSubscriptions.Where(s => s.Application.ToLower() == "recueil+lab").Sum(s => s.UserCount); List<int> lstNbUsers = new List<int>(); for (int i = 1; i <= 50; i++) lstNbUsers.Add(i); ViewBag.ListNbUsers = new SelectList(lstNbUsers); var CreditPackageList = db.CreditCost.ToList(); ViewBag.CreditPackageList = CreditPackageList; Subscription souscription = new Subscription(); souscription.Application = "Recueil+Lab"; souscription.CreditNumber = CreditPackageList.Single(cred => cred.IsMostPopular).CreditNumber; souscription.DateCreated = DateTime.Now; souscription.DateExpired = souscription.DateCreated.AddYears(1); return View(souscription); } else { return RedirectToAction("Index", "Home"); } } else return RedirectToAction("Index", "Home"); } catch (Exception ex) { ViewBag.Info = "Erreur: " + ex.Message; return View(); } }
private void UpdateUserCountAndCreditCount(Subscription objSubscription, bool bSaveChanges) { FirmInstitution firmInstitution = objSubscription.FirmInstitution; firmInstitution.MaxUserCount = firmInstitution.MaxUserCount + objSubscription.UserCount; firmInstitution.CreditCount = firmInstitution.CreditCount + objSubscription.CreditNumber; if (bSaveChanges) { db.SaveChanges(); } }
public ActionResult NouvelleSouscription(Subscription souscription) { if (ModelState.IsValid) { FirmInstitution firm = SessionManager.GetFirmInstitutionSession(); if (firm != null) { SouscriptionBL.Calculate(souscription, false, firm.idFirmInstitution.ToString()); SessionManager.Add<Data.Model.Subscription>(souscription, SouscriptionBL.SubscriptionSession); return View("NouvelleSouscriptionPaiement", souscription); } else { return RedirectToAction("Index", "Home"); } } else { return View(souscription); } }
/// <summary> /// Calcul les montants de la souscription effectuée /// </summary> /// <param name="pSouscription"></param> /// <param name="pIsNewFirm">True s'il s'agit d'une première souscription</param> /// <param name="pIdFirmInstitution">idFirmInstitution pour un FirmInstitution existant </param> public static void Calculate(Subscription pSouscription, bool pIsNewFirm, string pIdFirmInstitution = "") { using (UpsilabEntities db = new UpsilabEntities()) { bool useGiftAmountParrain = false; //application cost var subCost = db.SubscriptionCost.SingleOrDefault(sub => sub.SubscriptionCostName == pSouscription.Application && pSouscription.UserCount >= sub.UserNumberMin && pSouscription.UserCount <= sub.UserNumberMax); if (subCost != null && pSouscription.Duration.HasValue) pSouscription.ApplicationCost = subCost.SubscriptionCost1 * pSouscription.UserCount * 12 * pSouscription.Duration.Value; // *12 pour une année //credit cost var creditCost = db.CreditCost.SingleOrDefault(cred => cred.CreditNumber == pSouscription.CreditNumber); if (creditCost != null) { pSouscription.CreditCost = creditCost.CreditCost1; } pSouscription.AmountHT = pSouscription.ApplicationCost + pSouscription.CreditCost; //TODO decimal reductionPercent = 0; decimal reduction = 0; //S'il s'agit d'un nouveau FirmInstitution, gérer le code de parrainage s'il a été saisi if (pIsNewFirm) { //Sponsorship string status; if (SponsorshipBL.IsCodeValid(pSouscription.SponsorshipCode, out status)) { if (pSouscription.SponsorshipCode == Sponsorship.Reduction.FV030.ToString() || pSouscription.SponsorshipCode == Sponsorship.Reduction.FV050.ToString() || pSouscription.SponsorshipCode == Sponsorship.Reduction.FV100.ToString() || pSouscription.SponsorshipCode == Sponsorship.Reduction.PVI03.ToString() || pSouscription.SponsorshipCode == Sponsorship.Reduction.ALN05.ToString() || pSouscription.SponsorshipCode == Sponsorship.Reduction.ARA10.ToString() ) { reductionPercent = Convert.ToInt32(status); } else if (pSouscription.SponsorshipCode == Sponsorship.Reduction.APE07.ToString()) { // permettre d'obtenir une remise de 375€ HT sur le montant des licenses si la souscription est de au moins une licence Recueil+LAB, un an minimum et au moins 1500 credits if (pSouscription.Product == Product_Type_Recueil_lab && pSouscription.Duration >= 1 && pSouscription.CreditNumber >= 1500) { reduction = Convert.ToInt32(status); } } else if (pSouscription.SponsorshipCode == Sponsorship.Reduction.FFO33.ToString()) { //permettre d'obtenir une remise de 900€ HT sur le montant des licenses si la souscription est de au moins une licence Recueil+LAB, deux ans minimum et au moins 3000 credits if (pSouscription.Product == Product_Type_Recueil_lab && pSouscription.Duration >= 2 && pSouscription.CreditNumber >= 3000) { reduction = Convert.ToInt32(status); } } else { reductionPercent = db.Sponsorship.SingleOrDefault(sp => sp.Code == pSouscription.SponsorshipCode).ReductionFilleul; } } else { pSouscription.SponsorshipCode = string.Empty; } } // Nouvelle souscription d'un Firm Existant ---> Vérifier la réduction à appliquer pour un parrain else { Guid g_idFirmInstitution = Guid.Parse(pIdFirmInstitution); reductionPercent = SponsorshipBL.GetParrainReduction(g_idFirmInstitution, out useGiftAmountParrain); } //reduction = (pSouscription.AmountHT * (reductionPercent / 100)); if (reduction == 0) //Reduction percent { if (useGiftAmountParrain) { reductionPercent = 0; reduction = 0; } else { reduction = (pSouscription.ApplicationCost * (reductionPercent / 100)); //Reduction uniquement sur les Licences pas sur le credit } } pSouscription.AmountHT = pSouscription.AmountHT - reduction; pSouscription.ReductionPercent = reductionPercent; pSouscription.Reduction = reduction; pSouscription.TotalAmount = pSouscription.AmountHT + (pSouscription.AmountHT * (ConfigurationManager.TauxTVA / 100)); } }
public static void AddSubscription(Subscription sub) { using (Data.Model.UpsilabEntities createContext = new UpsilabEntities()) { createContext.Subscription.AddObject(sub); createContext.SaveChanges(); } }