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; }
public ActionResult UnLogiciel(SubscriptionModel postedSubscriptionModel) { var currentUser = SessionManager.GetUserSession(); var isModelStateValid = ModelState.IsValid; var currentHost = Upsilab.Business.Utility.ConfigurationManager.ExtranetHostCode; if (currentUser.IsSuperAdmin()) { isModelStateValid = true; //N'est pas utilisé en superadmin } if (isModelStateValid) { FirmInstitution currentFirm = new FirmInstitution(); #region Gestion de l'etablissement //Prendre l'etablissement en session si c'est un admin #region SuperAdmin if (SessionManager.GetUserSession().IsSuperAdmin()) { int idSponsor = 0; #region Sponsor if (Request.Params["IdSponsor"] != null) { string sIdSponsor = Request.Params["IdSponsor"].ToString(); Int32.TryParse(sIdSponsor, out idSponsor); } #endregion if (Request.Params["souscripteur"] != null) { if (Request.Params["souscripteur"].ToString().ToLower() == "new") { currentFirm.idFirmInstitution = GuidHelper.GenerateGuid(); //currentFirm.LeaderName = postedSubscriptionModel.FirmInstitution.LeaderName; //currentFirm.LeaderFirstName = postedSubscriptionModel.FirmInstitution.LeaderFirstName; currentFirm.ContactName = postedSubscriptionModel.FirmInstitution.ContactName; currentFirm.ContactFirstName = postedSubscriptionModel.FirmInstitution.ContactFirstName; currentFirm.E_mail = postedSubscriptionModel.FirmInstitution.E_mail; currentFirm.FirmInstitutionName = postedSubscriptionModel.FirmInstitution.FirmInstitutionName; currentFirm.FirmPostCode = postedSubscriptionModel.FirmInstitution.FirmPostCode; currentFirm.FirmStreet = postedSubscriptionModel.FirmInstitution.FirmStreet; currentFirm.FirmCity = postedSubscriptionModel.FirmInstitution.FirmCity; currentFirm.FirmPhone = postedSubscriptionModel.FirmInstitution.FirmPhone; currentFirm.idUserCreated = currentUser.idUser; //TODO : it's not the really admin, change it later currentFirm.IdFirmInstitutionType = 1; //CGP by default currentFirm.DateCreated = DateTime.Now; currentFirm.HostCode = currentHost; if (idSponsor != 0) { currentFirm.IdSponsor = idSponsor; } if (currentHost == PageLanguageHelper.HostCode.BE.ToString()) { currentFirm.ContactFonction = postedSubscriptionModel.FirmInstitution.ContactFonction; currentFirm.ContactMobile = postedSubscriptionModel.FirmInstitution.ContactMobile; currentFirm.NumeroTVAIntracommunautaire = postedSubscriptionModel.FirmInstitution.NumeroTVAIntracommunautaire; } FirmInstitutionBL.CreateFirmInstition(currentFirm); if (currentHost == PageLanguageHelper.HostCode.BE.ToString()) { //save FSMAFirmInstitution Option objOption = Upsilab.Business.Option.OptionBL.GetOptionById(1); if (objOption != null) { FirmInstitutionOptionBL.SaveFirmInstitutionOptionValue(currentFirm.idFirmInstitution, objOption, 1, postedSubscriptionModel.FirmInstitution.NumFSMA, "txtAttr"); } } } else if (Request.Params["souscripteur"].ToString().ToLower() == "old" && Request.Params["IdSelectedFirmInstitution"] != null) { Guid idSelectedFirm; Guid.TryParse(Request.Params["IdSelectedFirmInstitution"].ToString(), out idSelectedFirm); if (idSelectedFirm != null) { currentFirm = FirmInstitutionBL.GetFirmInstitutionByIdFirmInstitution(idSelectedFirm); } } if (idSponsor != 0) { FirmInstitutionBL.UpdateFirmInstitution(currentFirm.idFirmInstitution, "FirmInstitution.IdSponsor", idSponsor.ToString()); } //Save selected firm to session SessionManager.SetSelectedFirmInstitutionBySuperAdmin(currentFirm); } } #endregion #region User Admin else { currentFirm = SessionManager.GetFirmInstitutionSession(); //Extranet user } #endregion #endregion if (currentFirm != null) { #region Cas SuperAdmin if (SessionManager.GetUserSession().IsSuperAdmin()) { #region Sponsor int idSponsor = 0; if (Request.Params["IdSponsor"] != null) { string sIdSponsor = Request.Params["IdSponsor"].ToString(); Int32.TryParse(sIdSponsor, out idSponsor); } #endregion //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")); Subscription subscription = null; try { string isPaymentChecked = Request.Params["chkPaiement"]; ; DateTime datePayment; DateTime? dateUpdated = null; DateTime.TryParse(Request.Params["inputPaiement"], out datePayment); //Get subscription in session SessionManager.Get<Subscription>(SouscriptionBL.SubscriptionSession, out subscription); if (currentFirm != null && subscription != null) { subscription.IdFirmInstitution = currentFirm.idFirmInstitution; subscription.DateCreated = DateTime.Now; subscription.DateExpired = DateTime.Now.AddYears(postedSubscriptionModel.Subscription.Duration.Value); switch (postedSubscriptionModel.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; } //----------- //SouscriptionBL.Calculate(postedSubscriptionModel.Subscription, true, currentFirm.idFirmInstitution.ToString()); //Ne plus calculer puisque c'est deja en session ? //----------- #region Paiement // Si payé, on additionne avec le creditnumber déjà existant if (!string.IsNullOrEmpty(isPaymentChecked) && isPaymentChecked == "on" && datePayment != null) { subscription.DateUpdate = datePayment; subscription.IsPaid = true; dateUpdated = datePayment; } #endregion SouscriptionBL.AddSubscription(subscription); //add to have primary key #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(subscription, currentFirm, invoicePath, logoPath, out factName, dateUpdated); subscription.InvoiceFilename = factName; SouscriptionBL.UpdateSubscription(subscription); #endregion #region Generate Licence and update credit //Génération licence if (subscription.IsPaid) { LicenseBL.GenerateLicense(currentFirm, subscription); var newCreditNumber = (currentFirm.CreditCount == null ? 0 : currentFirm.CreditCount) + subscription.CreditNumber; if (idSponsor != 0) { currentFirm.IdSponsor = idSponsor; } FirmInstitutionBL.UpdateFirmInstitution(currentFirm.idFirmInstitution, "FirmInstitution.CreditCount", newCreditNumber.ToString()); } #endregion dicoRes.Add("Table_Title", LanguageData.GetContent("Table_Title_ok")); dicoRes.Add("Message", LanguageData.GetContent("Message_ok")); if (idSponsor != 0) { FirmInstitutionBL.UpdateFirmInstitution(currentFirm.idFirmInstitution, "FirmInstitution.IdSponsor", idSponsor.ToString()); } SessionManager.Clear(SouscriptionBL.SubscriptionSession); } else { dicoRes.Add("Table_Title", LanguageData.GetContent("Table_Title_firm_non_ok")); dicoRes.Add("Message", LanguageData.GetContent("Message_firm_non_ok")); } } catch (Exception ex) { dicoRes.Add("Table_Title", LanguageData.GetContent("Table_Title_non_ok")); dicoRes.Add("Message", LanguageData.GetContent("Message_non_ok") + ex.Message); } dicoRes.Add("ProductType", subscription.Product); //Si new firminstitution //1- envoyer email au contact facturation //2- créer administrateur central if (Request.Params["souscripteur"] != null && Request.Params["souscripteur"].ToString().ToLower() == "new") { //Config admin central return RedirectToAction(string.Format("Configuration/{0}", subscription.IdSubscription)); // /Souscrire/Configuration/idSubscription } else { //Envoi l'email au contact de facturation if (subscription.IsPaid) { //Ne plus envoyer d'email au contact facturation //subscription = SouscriptionBL.GetSubscriptionsById(subscription.IdSubscription); //SouscriptionBL.SendInvoiceMail(subscription, true); //Send to FirmIntitution Email //subscription.DateSendEmail = DateTime.Now; //SouscriptionBL.UpdateSubscription(subscription); } TempData["DicoRetour"] = dicoRes; return RedirectToAction("Retour"); } } #endregion #region Cas User admin else { switch (postedSubscriptionModel.Subscription.Application) { case "Recueil": postedSubscriptionModel.Subscription.Product = SouscriptionBL.Product_Type_Recueil; break; case "Lab": postedSubscriptionModel.Subscription.Product = SouscriptionBL.Product_Type_lab; break; case "Recueil+Lab": postedSubscriptionModel.Subscription.Product = SouscriptionBL.Product_Type_Recueil_lab.ToString(); break; } SouscriptionBL.Calculate(postedSubscriptionModel.Subscription, false, currentFirm.idFirmInstitution.ToString()); // TVA or NOT if (ConfigurationManager.ExtranetHostCode == PageLanguageHelper.HostCode.BE.ToString()) { if (!string.IsNullOrEmpty(currentFirm.NumeroTVAIntracommunautaire) && currentFirm.NumeroTVAIntracommunautaire.StartsWith("BE-0")) { postedSubscriptionModel.Subscription.TotalAmount = postedSubscriptionModel.Subscription.AmountHT; } } SessionManager.Set<Data.Model.Subscription>(SouscriptionBL.SubscriptionSession, postedSubscriptionModel.Subscription); ViewBag.Title = LanguageData.GetContent("un_logiciel"); ViewBag.SelectedClass = "mt1"; //Un logiciel return View("SouscriptionPaiement", postedSubscriptionModel.Subscription); } #endregion } else { return RedirectToAction("Index", "Home"); } } else { SubscriptionModel subscriptionModel = GetSubcriptionModel(postedSubscriptionModel.IdSelectedFirmInstitution); //TODO ? postedSubscriptionModel.FirmInstitutionsParents = subscriptionModel.FirmInstitutionsParents; postedSubscriptionModel.Licences = subscriptionModel.Licences; return View(postedSubscriptionModel); } }
public ActionResult AdminRenouvellementLicence(SubscriptionModel postedModel) { //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")); try { FirmInstitution firmInstitution = SessionManager.GetSelectedFirmInstitutionBySuperAdmin(); if (firmInstitution != null) { Subscription souscription = null; SessionManager.Get<Subscription>(SouscriptionBL.SubscriptionSession, out souscription); List<License> lstLicenseToRenew = souscription.LicensesToRenew; string isPaymentChecked = Request.Params["chkPaiement"]; ; DateTime datePayment; DateTime.TryParse(Request.Params["inputPaiement"], out datePayment); // Si payé set ispaid if (!string.IsNullOrEmpty(isPaymentChecked) && isPaymentChecked == "on" && datePayment != null) { souscription.DateUpdate = datePayment; souscription.IsPaid = true; } #region Sponsor int idSponsor = 0; if (Request.Params["IdSponsor"] != null) { string sIdSponsor = Request.Params["IdSponsor"].ToString(); Int32.TryParse(sIdSponsor, out idSponsor); if (idSponsor != 0) { firmInstitution.IdSponsor = idSponsor; FirmInstitutionBL.UpdateFirmInstitution(firmInstitution.idFirmInstitution, "FirmInstitution.IdSponsor", idSponsor.ToString()); } } #endregion SouscriptionBL.AddSubscription(souscription); //add license to renew in LicenseRenewalLog SouscriptionBL.AddLicenseRenewalLog(lstLicenseToRenew, souscription.IdSubscription); #region Génération de la facture (pdf) 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, firmInstitution, invoicePath, logoPath, out factName, souscription.DateUpdate); #endregion souscription.InvoiceFilename = factName; SouscriptionBL.UpdateSubscription(souscription); // Si payé, update license if (souscription.IsPaid) { SouscriptionBL.UpdateLicenseDateExpired(souscription); //Send facture mail to facturation contact Subscription subscription = SouscriptionBL.GetSubscriptionsById(souscription.IdSubscription); //load firm subscription.LicensesToRenewGroupedByApplicationType = souscription.LicensesToRenewGroupedByApplicationType; subscription.LicensesToRenew = souscription.LicensesToRenew; //Ne plus envoyer d'email au contact facturation //SouscriptionBL.SendInvoiceMail(subscription, true); //Send to FirmIntitution Email //subscription.DateSendEmail = DateTime.Now; SouscriptionBL.UpdateSubscription(subscription); } dicoRes.Add("Table_Title", LanguageData.GetContent("Table_Title_ok")); dicoRes.Add("Message", LanguageData.GetContent("Message_ok")); dicoRes.Add("ProductType", souscription.Product); //Clear session SessionManager.Clear(SouscriptionBL.SubscriptionSession); } else { dicoRes.Add("Table_Title", LanguageData.GetContent("Table_Title_firm_non_ok")); dicoRes.Add("Message", LanguageData.GetContent("Message_firm_non_ok")); } } catch (Exception ex) { dicoRes.Add("Table_Title", LanguageData.GetContent("Table_Title_non_ok")); dicoRes.Add("Message", LanguageData.GetContent("Message_non_ok") + ex.Message); } TempData["DicoRetour"] = dicoRes; return RedirectToAction("Retour"); }
/// <summary> /// /// </summary> /// <returns></returns> public SubscriptionModel GetLicencesToRenewAsSuperAdmin() { SubscriptionModel subscriptionModel = new SubscriptionModel(); try { //Get commerciaux List<Commercial> commercials = CommercialBL.Get(); ViewBag.Commercials = new SelectList(commercials, "Code", "Fullname"); //Duration ViewBag.ListDuration = GetSubcriptionDurations(); //Ne pas inclure les etablissements qui n'ont pas encore payé bool includeFirmWaitingValidation = false; List<FirmInstitution> lstFirmParents = FirmInstitutionBL.GetFirmInstitutionParentsWithLicence(includeFirmWaitingValidation); subscriptionModel.FirmInstitutionsParents = lstFirmParents; Guid idFirmInstitution = Guid.Empty; FirmInstitution selectedFirm = SessionManager.GetSelectedFirmInstitutionBySuperAdmin(); if (selectedFirm != null) { idFirmInstitution = selectedFirm.idFirmInstitution; } if (idFirmInstitution == Guid.Empty) { idFirmInstitution = subscriptionModel.FirmInstitutionsParents.FirstOrDefault().idFirmInstitution; selectedFirm = FirmInstitutionBL.GetFirmInstitutionByIdFirmInstitution(idFirmInstitution); if (selectedFirm != null) { SessionManager.SetSelectedFirmInstitutionBySuperAdmin(selectedFirm); } } subscriptionModel.IdSelectedFirmInstitution = idFirmInstitution; //liste license List<License> listLicenses = new List<License>(); if (idFirmInstitution != Guid.Empty) { listLicenses = LicenseBL.GetLicensesToRenewByFirmId(idFirmInstitution); subscriptionModel.Licences = listLicenses; } } catch (Exception ex) { Upsilab.Business.Log.Log.AppendException(ex); } return subscriptionModel; }
public ActionResult RenouvellementLicence(SubscriptionModel postedmodel) { var currentUser = Upsilab.Business.Utility.SessionManager.GetUserSession(); if (currentUser.IsSuperAdmin()) { //Posted values //SessionManager.Set<Guid>(SelectedFirmLicenseIdSessionKey, postedmodel.IdSelectedFirmInstitution); FirmInstitution selectedFirm = FirmInstitutionBL.GetFirmInstitutionByIdFirmInstitution(postedmodel.IdSelectedFirmInstitution); if (selectedFirm != null) { SessionManager.SetSelectedFirmInstitutionBySuperAdmin(selectedFirm); } SubscriptionModel subscriptionModel = new SubscriptionModel(); subscriptionModel = GetLicencesToRenewAsSuperAdmin(); return View(subscriptionModel); } else { ViewBag.Title = LanguageData.GetContent("un_renouvellement_de_licence"); ViewBag.SelectedClass = "mt3"; List<License> lstLicenseToRenew = postedmodel.Licences.Where(lic => lic.IsChecked).ToList(); FirmInstitution firm = SessionManager.GetFirmInstitutionSession(); if (firm != null) { Subscription souscription = postedmodel.Subscription; souscription.Duration = null; //il s'agit simplement de renouvellement, donc depend de la premiere souscription souscription.IdFirmInstitution = firm.idFirmInstitution; souscription.DateCreated = DateTime.Now; souscription.DateExpired = DateTime.Now; //Pas d'expiration souscription.UserCount = 0; //il s'agit d'un renouvellement souscription.LicensesToRenew = lstLicenseToRenew; if (lstLicenseToRenew.Select(lt => lt.idLicenseType).Contains(1) && lstLicenseToRenew.Select(lt => lt.idLicenseType).Contains(2)) { souscription.Product = SouscriptionBL.Product_Type_renouvellement_recueil_lab; } else if (lstLicenseToRenew.Select(lt => lt.idLicenseType).Contains(1)) { souscription.Product = SouscriptionBL.Product_Type_renouvellement_lab; } else if (lstLicenseToRenew.Select(lt => lt.idLicenseType).Contains(2)) { souscription.Product = SouscriptionBL.Product_Type_renouvellement_recueil; } souscription = SouscriptionBL.Calculate(souscription); //TODO SessionManager.Set<Data.Model.Subscription>(SouscriptionBL.SubscriptionSession, souscription); // ajout des licenses selectionnés en session SessionManager.Set<IList<Data.Model.License>>(LicenseBL.LicenseListSession, lstLicenseToRenew); return View("SouscriptionPaiement", souscription); } else { ViewBag.Info = LanguageData.GetContent("utilisateur_dans_aucune_ste"); return View(); } } }
public ActionResult RenouvellementLicence() { SessionManager.Clear(SouscriptionBL.SubscriptionSession); var currentUser = Upsilab.Business.Utility.SessionManager.GetUserSession(); SubscriptionModel subscriptionModel = new SubscriptionModel(); #region "Extranet admin" if (currentUser.IsSuperAdmin() || currentUser.IsCommercial()) { //Get licenses to renew subscriptionModel = GetLicencesToRenewAsSuperAdmin(); return View(subscriptionModel); } #endregion #region "Extranet user" else { FirmInstitution firm = SessionManager.GetFirmInstitutionSession(); if (firm != null) { var LicensesList = LicenseBL.GetLicensesToRenewByFirmId(firm.idFirmInstitution); subscriptionModel.Licences = LicensesList; return View(subscriptionModel); } else { ViewBag.Info = LanguageData.GetContent("utilisateur_dans_aucune_ste"); return View(); } } #endregion }