public override Task<ConnectedServiceConfigurator> CreateConfiguratorAsync(ConnectedServiceProviderContext context)
        {
            SinglePageViewModel configurator = new SinglePageViewModel();
            configurator.Context = context;

            return Task.FromResult(configurator as ConnectedServiceConfigurator);
        }
Exemplo n.º 2
0
        public override Task <ConnectedServiceConfigurator> CreateConfiguratorAsync(ConnectedServiceProviderContext context)
        {
            SinglePageViewModel configurator = new SinglePageViewModel();

            configurator.Context = context;

            return(Task.FromResult(configurator as ConnectedServiceConfigurator));
        }
Exemplo n.º 3
0
        public override Task <ConnectedServiceConfigurator> CreateConfiguratorAsync(ConnectedServiceProviderContext context)
        {
            SinglePageViewModel configurator = new SinglePageViewModel();

            configurator.Context = context;
            // Initialize viewmodel with the update functionality, based on the context
            configurator.Initialize();

            return(Task.FromResult(configurator as ConnectedServiceConfigurator));
        }
Exemplo n.º 4
0
        public async Task <IActionResult> Index()
        {
            var site = await GetCurrentSiteAsync();

            if (!site.SinglePageSignUp)
            {
                return(RedirectToAction("Step1"));
            }
            var siteStage = GetSiteStage();

            if (siteStage == SiteStage.BeforeRegistration)
            {
                if (site.RegistrationOpens.HasValue)
                {
                    AlertInfo = $"You can join {site.Name} on {site.RegistrationOpens.Value.ToString("d")}";
                }
                else
                {
                    AlertInfo = $"Registration for {site.Name} has not opened yet";
                }
                return(RedirectToAction("Index", "Home"));
            }
            else if (siteStage >= SiteStage.ProgramEnded)
            {
                AlertInfo = $"{site.Name} has ended, please join us next time!";
                return(RedirectToAction("Index", "Home"));
            }

            PageTitle = $"{site.Name} - Join Now!";

            var systemList = await _siteService.GetSystemList();

            var programList = await _siteService.GetProgramList();

            var programViewObject = _mapper.Map <List <ProgramViewModel> >(programList);
            var districtList      = await _schoolService.GetDistrictsAsync();

            SinglePageViewModel viewModel = new SinglePageViewModel()
            {
                RequirePostalCode  = site.RequirePostalCode,
                ProgramJson        = Newtonsoft.Json.JsonConvert.SerializeObject(programViewObject),
                SystemList         = new SelectList(systemList.ToList(), "Id", "Name"),
                ProgramList        = new SelectList(programList.ToList(), "Id", "Name"),
                SchoolDistrictList = new SelectList(districtList.ToList(), "Id", "Name")
            };

            if (systemList.Count() == 1)
            {
                var systemId   = systemList.SingleOrDefault().Id;
                var branchList = await _siteService.GetBranches(systemId);

                if (branchList.Count() > 1)
                {
                    branchList = branchList.Prepend(new Branch()
                    {
                        Id = -1
                    });
                }
                else
                {
                    viewModel.BranchId = branchList.SingleOrDefault().Id;
                }
                viewModel.BranchList = new SelectList(branchList.ToList(), "Id", "Name");
                viewModel.SystemId   = systemId;
            }

            if (programList.Count() == 1)
            {
                var programId = programList.SingleOrDefault().Id;
                var program   = await _siteService.GetProgramByIdAsync(programId);

                viewModel.ProgramId  = programList.SingleOrDefault().Id;
                viewModel.ShowAge    = program.AskAge;
                viewModel.ShowSchool = program.AskSchool;
            }

            return(View(viewModel));
        }
Exemplo n.º 5
0
        public async Task <IActionResult> Index(SinglePageViewModel model)
        {
            var site = await GetCurrentSiteAsync();

            if (!site.SinglePageSignUp)
            {
                return(RedirectToAction("Step1"));
            }
            if (site.RequirePostalCode && string.IsNullOrWhiteSpace(model.PostalCode))
            {
                ModelState.AddModelError("PostalCode", "The Zip Code field is required.");
            }

            bool askAge    = false;
            bool askSchool = false;

            if (model.ProgramId.HasValue)
            {
                var program = await _siteService.GetProgramByIdAsync(model.ProgramId.Value);

                askAge    = program.AskAge;
                askSchool = program.AskSchool;
                if (program.AgeRequired && !model.Age.HasValue)
                {
                    ModelState.AddModelError("Age", "The Age field is required.");
                }
                if (program.SchoolRequired)
                {
                    if (!model.NewEnteredSchool && !model.SchoolId.HasValue)
                    {
                        ModelState.AddModelError("SchoolId", "The School field is required.");
                    }
                    else if (model.NewEnteredSchool &&
                             string.IsNullOrWhiteSpace(model.EnteredSchoolName))
                    {
                        ModelState.AddModelError("EnteredSchoolName", "The School Name field is required.");
                    }
                }
                if (model.NewEnteredSchool && !model.SchoolDistrictId.HasValue &&
                    ((program.AskSchool && !string.IsNullOrWhiteSpace(model.EnteredSchoolName)) ||
                     program.SchoolRequired))
                {
                    ModelState.AddModelError("SchoolDistrictId", "The School District field is required.");
                }
            }

            if (ModelState.IsValid)
            {
                if (!askAge)
                {
                    model.Age = null;
                }
                if (askSchool)
                {
                    if (model.NewEnteredSchool)
                    {
                        model.SchoolId = null;
                    }
                    else
                    {
                        model.EnteredSchoolName = null;
                    }
                }
                else
                {
                    model.SchoolId          = null;
                    model.EnteredSchoolName = null;
                }

                User user = _mapper.Map <User>(model);
                user.SiteId = site.Id;
                try
                {
                    await _userService.RegisterUserAsync(user, model.Password,
                                                         model.SchoolDistrictId);

                    var loginAttempt = await _authenticationService
                                       .AuthenticateUserAsync(user.Username, model.Password);
                    await LoginUserAsync(loginAttempt);

                    var questionnaireId = await _questionnaireService
                                          .GetRequiredQuestionnaire(loginAttempt.User.Id, loginAttempt.User.Age);

                    if (questionnaireId.HasValue)
                    {
                        HttpContext.Session.SetInt32(SessionKey.PendingQuestionnaire,
                                                     questionnaireId.Value);
                    }

                    return(RedirectToAction("Index", "Home"));
                }
                catch (GraException gex)
                {
                    ShowAlertDanger("Could not create your account: ", gex);
                    if (gex.Message.Contains("password"))
                    {
                        ModelState.AddModelError("Password", "Please correct the issues with your password.");
                    }
                }
            }

            PageTitle = $"{site.Name} - Join Now!";

            if (model.SystemId.HasValue)
            {
                var branchList = await _siteService.GetBranches(model.SystemId.Value);

                if (model.BranchId < 1)
                {
                    branchList = branchList.Prepend(new Branch()
                    {
                        Id = -1
                    });
                }
                model.BranchList = new SelectList(branchList.ToList(), "Id", "Name");
            }
            var systemList = await _siteService.GetSystemList();

            var programList = await _siteService.GetProgramList();

            var programViewObject = _mapper.Map <List <ProgramViewModel> >(programList);

            model.SystemList        = new SelectList(systemList.ToList(), "Id", "Name");
            model.ProgramList       = new SelectList(programList.ToList(), "Id", "Name");
            model.ProgramJson       = Newtonsoft.Json.JsonConvert.SerializeObject(programViewObject);
            model.RequirePostalCode = site.RequirePostalCode;
            model.ShowAge           = askAge;
            model.ShowSchool        = askSchool;

            var districtList = await _schoolService.GetDistrictsAsync();

            if (model.SchoolId.HasValue)
            {
                var schoolDetails = await _schoolService.GetSchoolDetailsAsync(model.SchoolId.Value);

                var typeList = await _schoolService.GetTypesAsync(schoolDetails.SchoolDisctrictId);

                model.SchoolDistrictList = new SelectList(districtList.ToList(), "Id", "Name",
                                                          schoolDetails.SchoolDisctrictId);
                model.SchoolTypeList = new SelectList(typeList.ToList(), "Id", "Name",
                                                      schoolDetails.SchoolTypeId);
                model.SchoolList = new SelectList(schoolDetails.Schools.ToList(), "Id", "Name");
            }
            else
            {
                model.SchoolDistrictList = new SelectList(districtList.ToList(), "Id", "Name");
                if (model.SchoolDistrictId.HasValue)
                {
                    var typeList = await _schoolService.GetTypesAsync(model.SchoolDistrictId);

                    model.SchoolTypeList = new SelectList(typeList.ToList(), "Id", "Name",
                                                          model.SchoolTypeId);
                    var schoolList = await _schoolService.GetSchoolsAsync(model.SchoolDistrictId,
                                                                          model.SchoolTypeId);

                    model.SchoolList = new SelectList(schoolList.ToList(), "Id", "Name");
                }
            }

            return(View(model));
        }
 public SinglePageView(SinglePageViewModel viewModel)
 {
     this.DataContext = viewModel;
     this.InitializeComponent();
 }
Exemplo n.º 7
0
        public async Task <IActionResult> Index()
        {
            string authCode    = null;
            var    useAuthCode = TempData.ContainsKey(EnteredAuthCode);

            if (useAuthCode)
            {
                authCode = (string)TempData[EnteredAuthCode];
            }

            var site = await GetCurrentSiteAsync();

            if (!site.SinglePageSignUp)
            {
                return(RedirectToAction(nameof(Step1)));
            }
            var siteStage = GetSiteStage();

            if (!useAuthCode)
            {
                if (siteStage == SiteStage.BeforeRegistration)
                {
                    if (site.RegistrationOpens.HasValue)
                    {
                        AlertInfo = _sharedLocalizer[Annotations.Info.YouCanJoinOn,
                                                     site.Name,
                                                     site.RegistrationOpens.Value.ToString("d")];
                    }
                    else
                    {
                        AlertInfo = _sharedLocalizer[Annotations.Info.RegistrationNotOpenYet,
                                                     site.Name];
                    }
                    return(RedirectToAction(nameof(HomeController.Index), HomeController.Name));
                }
                else if (siteStage >= SiteStage.ProgramEnded)
                {
                    AlertInfo = _sharedLocalizer[Annotations.Info.ProgramEnded, site.Name];
                    return(RedirectToAction(nameof(HomeController.Index), HomeController.Name));
                }
            }

            PageTitle = _sharedLocalizer[Annotations.Title.JoinNow, site.Name];

            var systemList = await _siteService.GetSystemList();

            var programList = await _siteService.GetProgramList();

            var programViewObject = _mapper.Map <List <ProgramSettingsViewModel> >(programList);

            var viewModel = new SinglePageViewModel
            {
                RequirePostalCode = site.RequirePostalCode,
                ProgramJson       = JsonConvert.SerializeObject(programViewObject),
                SystemList        = NameIdSelectList(systemList.ToList()),
                ProgramList       = NameIdSelectList(programList.ToList()),
                SchoolList        = NameIdSelectList(await _schoolService.GetSchoolsAsync())
            };

            var askIfFirstTime = await GetSiteSettingBoolAsync(SiteSettingKey.Users.AskIfFirstTime);

            if (askIfFirstTime)
            {
                viewModel.AskFirstTime = EmptyNoYes();
            }

            var(askEmailSubscription, askEmailSubscriptionText) = await GetSiteSettingStringAsync(
                SiteSettingKey.Users.AskEmailSubPermission);

            if (askEmailSubscription)
            {
                viewModel.AskEmailSubscription     = EmptyNoYes();
                viewModel.AskEmailSubscriptionText = askEmailSubscriptionText;
            }

            var(askActivityGoal, defaultDailyGoal) = await GetSiteSettingIntAsync(
                SiteSettingKey.Users.DefaultDailyPersonalGoal);

            if (askActivityGoal)
            {
                viewModel.DailyPersonalGoal = defaultDailyGoal;
                var pointTranslation = programList.First().PointTranslation;
                viewModel.TranslationDescriptionPastTense =
                    pointTranslation.TranslationDescriptionPastTense.Replace("{0}", "").Trim();
                viewModel.ActivityDescriptionPlural = pointTranslation.ActivityDescriptionPlural;
            }

            if (systemList.Count() == 1)
            {
                var systemId   = systemList.Single().Id;
                var branchList = await _siteService.GetBranches(systemId);

                if (branchList.Count() > 1)
                {
                    branchList = branchList.Prepend(new Branch()
                    {
                        Id = -1
                    });
                }
                else
                {
                    viewModel.BranchId = branchList.SingleOrDefault()?.Id;
                }
                viewModel.BranchList = NameIdSelectList(branchList.ToList());
                viewModel.SystemId   = systemId;
            }

            if (programList.Count() == 1)
            {
                var programId = programList.Single().Id;
                var program   = await _siteService.GetProgramByIdAsync(programId);

                viewModel.ProgramId  = programId;
                viewModel.ShowAge    = program.AskAge;
                viewModel.ShowSchool = program.AskSchool;
            }

            if (useAuthCode)
            {
                viewModel.AuthorizationCode = authCode;
            }

            return(View(viewModel));
        }
Exemplo n.º 8
0
        public async Task <IActionResult> Index(SinglePageViewModel model)
        {
            var site = await GetCurrentSiteAsync();

            if (!site.SinglePageSignUp)
            {
                return(RedirectToAction(nameof(Step1)));
            }
            if (site.RequirePostalCode && string.IsNullOrWhiteSpace(model.PostalCode))
            {
                ModelState.AddModelError(nameof(model.PostalCode),
                                         _sharedLocalizer[ErrorMessages.Field,
                                                          _sharedLocalizer[DisplayNames.ZipCode]]);
            }

            var askIfFirstTime = await GetSiteSettingBoolAsync(SiteSettingKey.Users.AskIfFirstTime);

            if (!askIfFirstTime)
            {
                ModelState.Remove(nameof(model.IsFirstTime));
            }

            var(askEmailSubscription, askEmailSubscriptionText) = await GetSiteSettingStringAsync(
                SiteSettingKey.Users.AskEmailSubPermission);

            if (!askEmailSubscription)
            {
                ModelState.Remove(nameof(model.EmailSubscriptionRequested));
            }
            else
            {
                var subscriptionRequested = model.EmailSubscriptionRequested.Equals(
                    DropDownTrueValue, StringComparison.OrdinalIgnoreCase);
                if (subscriptionRequested && string.IsNullOrWhiteSpace(model.Email))
                {
                    ModelState.AddModelError(nameof(model.Email), " ");
                    ModelState.AddModelError(nameof(model.EmailSubscriptionRequested),
                                             _sharedLocalizer[Annotations.Required.EmailForSubscription]);
                }
            }

            var(askActivityGoal, defaultDailyGoal) = await GetSiteSettingIntAsync(
                SiteSettingKey.Users.DefaultDailyPersonalGoal);

            bool askAge    = false;
            bool askSchool = false;

            if (model.ProgramId.HasValue)
            {
                var program = await _siteService.GetProgramByIdAsync(model.ProgramId.Value);

                askAge    = program.AskAge;
                askSchool = program.AskSchool;
                if (program.AgeRequired && !model.Age.HasValue)
                {
                    ModelState.AddModelError(DisplayNames.Age,
                                             _sharedLocalizer[ErrorMessages.Field,
                                                              _sharedLocalizer[DisplayNames.Age]]);
                }
                if (program.SchoolRequired && !model.SchoolId.HasValue && !model.SchoolNotListed &&
                    !model.IsHomeschooled)
                {
                    ModelState.AddModelError(nameof(model.SchoolId),
                                             _sharedLocalizer[ErrorMessages.Field,
                                                              _sharedLocalizer[DisplayNames.School]]);
                }
            }

            if (ModelState.IsValid)
            {
                if (!askAge)
                {
                    model.Age = null;
                }
                if (!askSchool)
                {
                    model.SchoolId        = null;
                    model.SchoolNotListed = false;
                    model.IsHomeschooled  = false;
                }
                else if (model.IsHomeschooled)
                {
                    model.SchoolId        = null;
                    model.SchoolNotListed = false;
                }
                else if (model.SchoolNotListed)
                {
                    model.SchoolId = null;
                }

                User user = _mapper.Map <User>(model);
                user.SiteId = site.Id;
                if (askIfFirstTime)
                {
                    user.IsFirstTime = model.IsFirstTime.Equals(DropDownTrueValue,
                                                                StringComparison.OrdinalIgnoreCase);
                }

                if (askEmailSubscription)
                {
                    user.IsEmailSubscribed = model.EmailSubscriptionRequested.Equals(
                        DropDownTrueValue, StringComparison.OrdinalIgnoreCase);
                }

                if (askActivityGoal && user.DailyPersonalGoal > 0)
                {
                    if (user.DailyPersonalGoal > Defaults.MaxDailyActivityGoal)
                    {
                        user.DailyPersonalGoal = Defaults.MaxDailyActivityGoal;
                    }
                }
                else
                {
                    user.DailyPersonalGoal = null;
                }

                try
                {
                    bool   useAuthCode = false;
                    string sanitized   = null;
                    if (!string.IsNullOrWhiteSpace(model.AuthorizationCode))
                    {
                        sanitized   = model.AuthorizationCode.Trim().ToLowerInvariant();
                        useAuthCode = await _authorizationCodeService
                                      .ValidateAuthorizationCode(sanitized);

                        if (!useAuthCode)
                        {
                            _logger.LogError($"Invalid auth code used on join: {model.AuthorizationCode}");
                        }
                    }
                    await _userService.RegisterUserAsync(user, model.Password,
                                                         allowDuringCloseProgram : useAuthCode);

                    var loginAttempt = await _authenticationService
                                       .AuthenticateUserAsync(user.Username, model.Password, useAuthCode);
                    await LoginUserAsync(loginAttempt);

                    if (useAuthCode)
                    {
                        string role = await _userService.ActivateAuthorizationCode(sanitized,
                                                                                   loginAttempt.User.Id);

                        if (!string.IsNullOrEmpty(role))
                        {
                            var auth = await _authenticationService
                                       .RevalidateUserAsync(loginAttempt.User.Id);

                            auth.Message = $"Code applied, you are a member of the role: {role}.";
                            await LoginUserAsync(auth);
                        }
                    }

                    await _mailService.SendUserBroadcastsAsync(loginAttempt.User.Id, false, true,
                                                               true);

                    var questionnaireId = await _questionnaireService
                                          .GetRequiredQuestionnaire(loginAttempt.User.Id, loginAttempt.User.Age);

                    if (questionnaireId.HasValue)
                    {
                        HttpContext.Session.SetInt32(SessionKey.PendingQuestionnaire,
                                                     questionnaireId.Value);
                    }

                    if (!TempData.ContainsKey(TempDataKey.UserJoined))
                    {
                        TempData.Add(TempDataKey.UserJoined, true);
                    }

                    return(RedirectToAction(nameof(HomeController.Index), HomeController.Name));
                }
                catch (GraException gex)
                {
                    ShowAlertDanger(_sharedLocalizer[Annotations.Validate.CouldNotCreate,
                                                     _sharedLocalizer[gex.Message]]);
                    if (gex.GetType() == typeof(GraPasswordValidationException))
                    {
                        ModelState.AddModelError(nameof(model.Password),
                                                 _sharedLocalizer[Annotations.Validate.PasswordIssue]);
                    }
                }
            }

            PageTitle = _sharedLocalizer[Annotations.Title.JoinNow, site.Name];

            if (model.SystemId.HasValue)
            {
                var branchList = await _siteService.GetBranches(model.SystemId.Value);

                if (model.BranchId < 1)
                {
                    branchList = branchList.Prepend(new Branch()
                    {
                        Id = -1
                    });
                }
                model.BranchList = NameIdSelectList(branchList.ToList());
            }
            var systemList = await _siteService.GetSystemList();

            var programList = await _siteService.GetProgramList();

            var programViewObject = _mapper.Map <List <ProgramSettingsViewModel> >(programList);

            model.SystemList        = NameIdSelectList(systemList.ToList());
            model.ProgramList       = NameIdSelectList(programList.ToList());
            model.SchoolList        = NameIdSelectList(await _schoolService.GetSchoolsAsync());
            model.ProgramJson       = JsonConvert.SerializeObject(programViewObject);
            model.RequirePostalCode = site.RequirePostalCode;
            model.ShowAge           = askAge;
            model.ShowSchool        = askSchool;

            if (askIfFirstTime)
            {
                model.AskFirstTime = EmptyNoYes();
            }

            if (askEmailSubscription)
            {
                model.AskEmailSubscription     = EmptyNoYes();
                model.AskEmailSubscriptionText = askEmailSubscriptionText;
            }

            if (askActivityGoal)
            {
                var pointTranslation = programList.First().PointTranslation;
                model.TranslationDescriptionPastTense =
                    pointTranslation.TranslationDescriptionPastTense.Replace("{0}", "").Trim();
                model.ActivityDescriptionPlural = pointTranslation.ActivityDescriptionPlural;
            }

            return(View(model));
        }
Exemplo n.º 9
0
 public SinglePageView(SinglePageViewModel viewModel)
 {
     this.DataContext = viewModel;
     this.InitializeComponent();
 }
Exemplo n.º 10
0
        public async Task <IActionResult> Index()
        {
            string authCode    = null;
            var    useAuthCode = TempData.ContainsKey(EnteredAuthCode);

            if (useAuthCode)
            {
                authCode = (string)TempData[EnteredAuthCode];
            }

            var site = await GetCurrentSiteAsync();

            if (!site.SinglePageSignUp)
            {
                return(RedirectToAction("Step1"));
            }
            var siteStage = GetSiteStage();

            if (useAuthCode == false)
            {
                if (siteStage == SiteStage.BeforeRegistration)
                {
                    if (site.RegistrationOpens.HasValue)
                    {
                        AlertInfo = $"You can join {site.Name} on {site.RegistrationOpens.Value.ToString("d")}";
                    }
                    else
                    {
                        AlertInfo = $"Registration for {site.Name} has not opened yet";
                    }
                    return(RedirectToAction("Index", "Home"));
                }
                else if (siteStage >= SiteStage.ProgramEnded)
                {
                    AlertInfo = $"{site.Name} has ended, please join us next time!";
                    return(RedirectToAction("Index", "Home"));
                }
            }

            PageTitle = $"{site.Name} - Join Now!";

            var systemList = await _siteService.GetSystemList();

            var programList = await _siteService.GetProgramList();

            var programViewObject = _mapper.Map <List <ProgramViewModel> >(programList);
            var districtList      = await _schoolService.GetDistrictsAsync(true);

            SinglePageViewModel viewModel = new SinglePageViewModel()
            {
                RequirePostalCode       = site.RequirePostalCode,
                ProgramJson             = Newtonsoft.Json.JsonConvert.SerializeObject(programViewObject),
                SystemList              = new SelectList(systemList.ToList(), "Id", "Name"),
                ProgramList             = new SelectList(programList.ToList(), "Id", "Name"),
                CategorySelectionAction = nameof(SchoolCategory),
                PublicSelected          = true,
                ShowPrivateOption       = await _schoolService.AnyPrivateSchoolsAsync(),
                ShowCharterOption       = await _schoolService.AnyCharterSchoolsAsync(),
                SchoolDistrictList      = new SelectList(districtList.ToList(), "Id", "Name"),
                AskEmailReminder        = siteStage == SiteStage.RegistrationOpen &&
                                          await GetSiteSettingBoolAsync(SiteSettingKey.Users.AskPreregistrationReminder)
            };

            var askIfFirstTime = await GetSiteSettingBoolAsync(SiteSettingKey.Users.AskIfFirstTime);

            if (askIfFirstTime)
            {
                viewModel.AskFirstTime = EmptyNoYes();
            }

            var(askActivityGoal, defaultDailyGoal) = await GetSiteSettingIntAsync(
                SiteSettingKey.Users.DefaultDailyPersonalGoal);

            if (askActivityGoal)
            {
                viewModel.DailyPersonalGoal = defaultDailyGoal;
                var pointTranslation = programList.First().PointTranslation;
                viewModel.TranslationDescriptionPastTense =
                    pointTranslation.TranslationDescriptionPastTense.Replace("{0}", "").Trim();
                viewModel.ActivityDescriptionPlural = pointTranslation.ActivityDescriptionPlural;
            }

            if (systemList.Count() == 1)
            {
                var systemId   = systemList.SingleOrDefault().Id;
                var branchList = await _siteService.GetBranches(systemId);

                if (branchList.Count() > 1)
                {
                    branchList = branchList.Prepend(new Branch()
                    {
                        Id = -1
                    });
                }
                else
                {
                    viewModel.BranchId = branchList.SingleOrDefault().Id;
                }
                viewModel.BranchList = new SelectList(branchList.ToList(), "Id", "Name");
                viewModel.SystemId   = systemId;
            }

            if (programList.Count() == 1)
            {
                var programId = programList.SingleOrDefault().Id;
                var program   = await _siteService.GetProgramByIdAsync(programId);

                viewModel.ProgramId  = programList.SingleOrDefault().Id;
                viewModel.ShowAge    = program.AskAge;
                viewModel.ShowSchool = program.AskSchool;
            }

            if (useAuthCode)
            {
                viewModel.AuthorizationCode = authCode;
            }

            return(View(viewModel));
        }
Exemplo n.º 11
0
        public async Task <IActionResult> Index(SinglePageViewModel model)
        {
            var site = await GetCurrentSiteAsync();

            if (!site.SinglePageSignUp)
            {
                return(RedirectToAction("Step1"));
            }
            if (site.RequirePostalCode && string.IsNullOrWhiteSpace(model.PostalCode))
            {
                ModelState.AddModelError("PostalCode", "The Zip Code field is required.");
            }

            var askIfFirstTime = await GetSiteSettingBoolAsync(SiteSettingKey.Users.AskIfFirstTime);

            if (!askIfFirstTime)
            {
                ModelState.Remove(nameof(model.IsFirstTime));
            }

            model.AskEmailReminder = GetSiteStage() == SiteStage.RegistrationOpen &&
                                     await GetSiteSettingBoolAsync(SiteSettingKey.Users.AskPreregistrationReminder);

            if (model.AskEmailReminder && model.PreregistrationReminderRequested &&
                string.IsNullOrWhiteSpace(model.Email))
            {
                ModelState.AddModelError(nameof(model.Email),
                                         "Please enter an email address to send the reminder to.");
            }

            var(askActivityGoal, defaultDailyGoal) = await GetSiteSettingIntAsync(
                SiteSettingKey.Users.DefaultDailyPersonalGoal);

            bool askAge    = false;
            bool askSchool = false;

            if (model.ProgramId.HasValue)
            {
                var program = await _siteService.GetProgramByIdAsync(model.ProgramId.Value);

                askAge    = program.AskAge;
                askSchool = program.AskSchool;
                if (program.AgeRequired && !model.Age.HasValue)
                {
                    ModelState.AddModelError("Age", "The Age field is required.");
                }
                if (program.SchoolRequired && !model.SchoolId.HasValue && !model.SchoolNotListed &&
                    !model.IsHomeschooled)
                {
                    ModelState.AddModelError("SchoolId", "The School field is required.");
                }
            }

            if (ModelState.IsValid)
            {
                if (!askAge)
                {
                    model.Age = null;
                }
                if (!askSchool)
                {
                    model.SchoolId        = null;
                    model.SchoolNotListed = false;
                    model.IsHomeschooled  = false;
                }
                else if (model.IsHomeschooled)
                {
                    model.SchoolId        = null;
                    model.SchoolNotListed = false;
                }
                else if (model.SchoolNotListed)
                {
                    model.SchoolId = null;
                }

                User user = _mapper.Map <User>(model);
                user.SiteId = site.Id;
                if (askIfFirstTime)
                {
                    user.IsFirstTime = model.IsFirstTime.Equals(DropDownTrueValue,
                                                                System.StringComparison.OrdinalIgnoreCase);
                }

                if (!model.AskEmailReminder)
                {
                    user.PreregistrationReminderRequested = false;
                }

                if (askActivityGoal && user.DailyPersonalGoal > 0)
                {
                    if (user.DailyPersonalGoal > Defaults.MaxDailyActivityGoal)
                    {
                        user.DailyPersonalGoal = Defaults.MaxDailyActivityGoal;
                    }
                }
                else
                {
                    user.DailyPersonalGoal = null;
                }

                try
                {
                    bool   useAuthCode = false;
                    string sanitized   = null;
                    if (!string.IsNullOrWhiteSpace(model.AuthorizationCode))
                    {
                        sanitized   = _codeSanitizer.Sanitize(model.AuthorizationCode, 255);
                        useAuthCode = await _userService.ValidateAuthorizationCode(sanitized);

                        if (useAuthCode == false)
                        {
                            _logger.LogError($"Invalid auth code used on join: {model.AuthorizationCode}");
                        }
                    }
                    await _userService.RegisterUserAsync(user, model.Password,
                                                         allowDuringCloseProgram : useAuthCode);

                    var loginAttempt = await _authenticationService
                                       .AuthenticateUserAsync(user.Username, model.Password, useAuthCode);
                    await LoginUserAsync(loginAttempt);

                    if (useAuthCode)
                    {
                        string role = await _userService.ActivateAuthorizationCode(sanitized,
                                                                                   loginAttempt.User.Id);

                        if (!string.IsNullOrEmpty(role))
                        {
                            var auth = await _authenticationService
                                       .RevalidateUserAsync(loginAttempt.User.Id);

                            auth.AuthenticationMessage = $"Code applied, you are a member of the role: <strong>{role}</strong>.";
                            await LoginUserAsync(auth);
                        }
                    }

                    await _mailService.SendUserBroadcastsAsync(loginAttempt.User.Id, false, true,
                                                               true);

                    var questionnaireId = await _questionnaireService
                                          .GetRequiredQuestionnaire(loginAttempt.User.Id, loginAttempt.User.Age);

                    if (questionnaireId.HasValue)
                    {
                        HttpContext.Session.SetInt32(SessionKey.PendingQuestionnaire,
                                                     questionnaireId.Value);
                    }

                    return(RedirectToAction("Index", "Home"));
                }
                catch (GraException gex)
                {
                    ShowAlertDanger("Could not create your account: ", gex);
                    if (gex.Message.Contains("password"))
                    {
                        ModelState.AddModelError("Password", "Please correct the issues with your password.");
                    }
                }
            }

            PageTitle = $"{site.Name} - Join Now!";

            if (model.SystemId.HasValue)
            {
                var branchList = await _siteService.GetBranches(model.SystemId.Value);

                if (model.BranchId < 1)
                {
                    branchList = branchList.Prepend(new Branch()
                    {
                        Id = -1
                    });
                }
                model.BranchList = new SelectList(branchList.ToList(), "Id", "Name");
            }
            var systemList = await _siteService.GetSystemList();

            var programList = await _siteService.GetProgramList();

            var programViewObject = _mapper.Map <List <ProgramViewModel> >(programList);

            model.SystemList        = new SelectList(systemList.ToList(), "Id", "Name");
            model.ProgramList       = new SelectList(programList.ToList(), "Id", "Name");
            model.ProgramJson       = Newtonsoft.Json.JsonConvert.SerializeObject(programViewObject);
            model.RequirePostalCode = site.RequirePostalCode;
            model.ShowAge           = askAge;
            model.ShowSchool        = askSchool;

            model.CategorySelectionAction = nameof(SchoolCategory);
            var districtList = await _schoolService.GetDistrictsAsync(true);

            if (model.PrivateSelected)
            {
                model.PublicSelected     = false;
                model.CharterSelected    = false;
                model.IsHomeschooled     = false;
                model.SchoolDistrictList = new SelectList(districtList.ToList(), "Id", "Name");
                model.SchoolList         = new SelectList(
                    await _schoolService.GetPrivateSchoolListAsync(), "Id", "Name");
            }
            else if (model.CharterSelected)
            {
                model.PublicSelected     = false;
                model.PrivateSelected    = false;
                model.IsHomeschooled     = false;
                model.SchoolDistrictList = new SelectList(districtList.ToList(), "Id", "Name");
                model.SchoolList         = new SelectList(
                    await _schoolService.GetCharterSchoolListAsync(), "Id", "Name");
            }
            else if (model.IsHomeschooled)
            {
                model.PublicSelected     = false;
                model.PrivateSelected    = false;
                model.CharterSelected    = false;
                model.SchoolDistrictList = new SelectList(districtList.ToList(), "Id", "Name");
            }
            else
            {
                model.PublicSelected  = true;
                model.PrivateSelected = false;
                model.CharterSelected = false;
                model.IsHomeschooled  = false;

                if (model.SchoolId.HasValue)
                {
                    var schoolDetails = await _schoolService.GetSchoolDetailsAsync(model.SchoolId.Value);

                    var typeList = await _schoolService.GetTypesAsync(schoolDetails.SchoolDistrictId);

                    model.SchoolDistrictList = new SelectList(districtList.ToList(), "Id", "Name",
                                                              schoolDetails.SchoolDistrictId);
                    model.SchoolTypeList = new SelectList(typeList.ToList(), "Id", "Name",
                                                          schoolDetails.SchoolTypeId);
                    model.SchoolList = new SelectList(schoolDetails.Schools.ToList(), "Id", "Name");
                    ModelState.Remove(nameof(model.SchoolTypeId));
                }
                else
                {
                    model.SchoolDistrictList = new SelectList(districtList.ToList(), "Id", "Name");
                    if (model.SchoolDistrictId.HasValue)
                    {
                        var typeList = await _schoolService.GetTypesAsync(model.SchoolDistrictId);

                        model.SchoolTypeList = new SelectList(typeList.ToList(), "Id", "Name",
                                                              model.SchoolTypeId);
                        var schoolList = await _schoolService.GetSchoolsAsync(model.SchoolDistrictId,
                                                                              model.SchoolTypeId);

                        model.SchoolList = new SelectList(schoolList.ToList(), "Id", "Name");
                    }
                }
            }

            if (askIfFirstTime)
            {
                model.AskFirstTime = EmptyNoYes();
            }

            if (askActivityGoal)
            {
                var pointTranslation = programList.First().PointTranslation;
                model.TranslationDescriptionPastTense =
                    pointTranslation.TranslationDescriptionPastTense.Replace("{0}", "").Trim();
                model.ActivityDescriptionPlural = pointTranslation.ActivityDescriptionPlural;
            }

            return(View(model));
        }
Exemplo n.º 12
0
        public async Task <IActionResult> SchoolCategory(SinglePageViewModel model)
        {
            ModelState.Clear();

            model.PublicSelected  = false;
            model.PrivateSelected = false;
            model.CharterSelected = false;
            model.IsHomeschooled  = false;
            if (model.SetPrivate)
            {
                model.PrivateSelected = true;
                model.SchoolList      = new SelectList(
                    await _schoolService.GetPrivateSchoolListAsync(), "Id", "Name");
            }
            else if (model.SetCharter)
            {
                model.CharterSelected = true;
                model.SchoolList      = new SelectList(
                    await _schoolService.GetCharterSchoolListAsync(), "Id", "Name");
            }
            else if (model.SetHomeschool)
            {
                model.IsHomeschooled = true;
            }
            else
            {
                model.PublicSelected = true;
            }

            model.CategorySelectionAction = nameof(SchoolCategory);
            model.SchoolDistrictList      = new SelectList(
                await _schoolService.GetDistrictsAsync(true), "Id", "Name");
            model.SchoolId         = null;
            model.SchoolDistrictId = null;
            model.SchoolNotListed  = false;

            var site = await GetCurrentSiteAsync();

            PageTitle = $"{site.Name} - Join Now!";

            if (model.SystemId.HasValue)
            {
                var branchList = await _siteService.GetBranches(model.SystemId.Value);

                if (model.BranchId < 1)
                {
                    branchList = branchList.Prepend(new Branch()
                    {
                        Id = -1
                    });
                }
                model.BranchList = new SelectList(branchList.ToList(), "Id", "Name");
            }
            var systemList = await _siteService.GetSystemList();

            var programList = await _siteService.GetProgramList();

            var programViewObject = _mapper.Map <List <ProgramViewModel> >(programList);

            model.SystemList        = new SelectList(systemList.ToList(), "Id", "Name");
            model.ProgramList       = new SelectList(programList.ToList(), "Id", "Name");
            model.ProgramJson       = Newtonsoft.Json.JsonConvert.SerializeObject(programViewObject);
            model.RequirePostalCode = site.RequirePostalCode;
            model.AskEmailReminder  = GetSiteStage() == SiteStage.RegistrationOpen &&
                                      await GetSiteSettingBoolAsync(SiteSettingKey.Users.AskPreregistrationReminder);

            if (model.ProgramId.HasValue)
            {
                var program = await _siteService.GetProgramByIdAsync(model.ProgramId.Value);

                model.ShowAge    = program.AskAge;
                model.ShowSchool = program.AskSchool;
            }

            var askIfFirstTime = await GetSiteSettingBoolAsync(SiteSettingKey.Users.AskIfFirstTime);

            if (askIfFirstTime)
            {
                model.AskFirstTime = EmptyNoYes();
            }

            var(askActivityGoal, defaultDailyGoal) = await GetSiteSettingIntAsync(
                SiteSettingKey.Users.DefaultDailyPersonalGoal);

            if (askActivityGoal)
            {
                var pointTranslation = programList.First().PointTranslation;
                model.TranslationDescriptionPastTense =
                    pointTranslation.TranslationDescriptionPastTense.Replace("{0}", "").Trim();
                model.ActivityDescriptionPlural = pointTranslation.ActivityDescriptionPlural;
            }

            return(View(nameof(Index), model));
        }
Exemplo n.º 13
0
        public ActionResult Index()
        {
            SinglePageViewModel singlevm = new SinglePageViewModel();

            try
            {
                GroupWiseDetails objGrpWise = new GroupWiseDetails();
                singlevm.lstGroupWiseDetails = SPR.GetGroupWiseData();
                foreach (var item in singlevm.lstGroupWiseDetails)
                {
                    objGrpWise.CustCount       = objGrpWise.CustCount + item.CustCount;
                    objGrpWise.BulkUploadCount = objGrpWise.BulkUploadCount + item.BulkUploadCount;
                    objGrpWise.Total           = objGrpWise.Total + item.Total;
                }
                objGrpWise.CustName = "Total";
                singlevm.lstGroupWiseDetails.Add(objGrpWise);



                singlevm.lstCommunication = SPR.GetCommunicationWhatsAppExpiryData();
                var userDetails = (CustomerLoginDetail)Session["UserSession"];
                userDetails.CustomerName         = CR.GetCustomerName(userDetails.GroupId);
                Session["UserSession"]           = userDetails;
                singlevm.lstCSMembers            = CR.GetRMAssigned();
                singlevm.lstsummarytable         = SPR.GetSinglePageSummaryTable();
                singlevm.lstnontransactingGrp    = SPR.GetSinglePageNonTransactingGroups();
                singlevm.lstnontransactingOutlet = SPR.GetNonTransactingOutlet("");
                singlevm.lstlowtransactingOutlet = SPR.GetLowTransactingOutlet("");

                singlevm.lstCitywiseData = SPR.GetCityWiseData();
                if (singlevm.lstCitywiseData != null)
                {
                    var categories = singlevm.lstCitywiseData.GroupBy(x => x.CategoryName).Select(y => y.First()).ToList();
                    singlevm.lstCategories = categories;

                    var cities = singlevm.lstCitywiseData.GroupBy(x => x.CityName).Select(y => y.First()).ToList();
                    List <CitywiseReport> objData = new List <CitywiseReport>();
                    foreach (var item in cities)
                    {
                        CitywiseReport objItem   = new CitywiseReport();
                        long           cityCount = singlevm.lstCitywiseData.Where(x => x.CityName == item.CityName).Sum(y => y.MemberBase);
                        objItem.CityName     = item.CityName;
                        objItem.CategoryName = item.CategoryName;
                        objItem.MemberBase   = cityCount;

                        objData.Add(objItem);
                    }

                    objData = objData.OrderByDescending(x => x.MemberBase).ToList();
                    cities  = objData.GroupBy(x => x.CityName).Select(y => y.First()).ToList();

                    List <CitywiseReport> objCategoryData = new List <CitywiseReport>();
                    foreach (var category in categories)
                    {
                        CitywiseReport objItem       = new CitywiseReport();
                        long           categoryCount = singlevm.lstCitywiseData.Where(x => x.CategoryName == category.CategoryName).Sum(y => y.MemberBase);
                        objItem.CategoryName = category.CategoryName;
                        objItem.MemberBase   = categoryCount;

                        objCategoryData.Add(objItem);
                    }

                    singlevm.lstCategoriesTotal = objCategoryData;
                    singlevm.GrandTotal         = objCategoryData.Sum(x => x.MemberBase);
                    singlevm.lstCities          = cities;
                }
            }
            catch (Exception ex)
            {
                newexception.AddException(ex, "Single Page");
            }
            return(View(singlevm));
        }