public async Task <IActionResult> Create(HourPointConfigurationsModel hourPointConfigurationsModel)
        {
            try
            {
                TimeNotesUser identityUser = await _userManager.GetUserAsync(User);

                HourPointConfigurations hourPointConfigurations = new HourPointConfigurations(hourPointConfigurationsModel.WorkDays,
                                                                                              hourPointConfigurationsModel.BankOfHours,
                                                                                              hourPointConfigurationsModel.OfficeHour,
                                                                                              hourPointConfigurationsModel.LunchTime,
                                                                                              hourPointConfigurationsModel.StartWorkTime,
                                                                                              hourPointConfigurationsModel.ToleranceTime,
                                                                                              Guid.Parse(identityUser.Id),
                                                                                              hourPointConfigurationsModel.HourValue);

                _hourPointConfigurationsRepository.AddHourPointConfiguration(hourPointConfigurations);
                await _hourPointConfigurationsRepository.Commit();

                await EnsurePasscode(hourPointConfigurationsModel, identityUser);

                return(RedirectToAction(nameof(Index)));
            }
            catch
            {
                return(View());
            }
        }
        private async Task EnsurePasscode(HourPointConfigurationsModel hourPointConfigurationsModel, TimeNotesUser identityUser)
        {
            if (hourPointConfigurationsModel.UseAlexaSupport && string.IsNullOrWhiteSpace(identityUser.AlexaUserId))
            {
                string passcode = await GetPasscode();

                await _cache.SetAsync(passcode, identityUser.Id);

                TempData["passcode"] = passcode;
            }
        }
        public async Task <IActionResult> Edit(HourPointConfigurationsModel hourPointConfigurationsModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.Values));
            }

            HourPointConfigurations hourPointConfigurations = await _hourPointConfigurationsRepository.GetHourPointConfigurationsById(hourPointConfigurationsModel.Id);

            hourPointConfigurations.ChangeWorkDays(hourPointConfigurationsModel.WorkDays);
            hourPointConfigurations.ChangeLunchTime(hourPointConfigurationsModel.LunchTime);
            hourPointConfigurations.ChangeOfficeHour(hourPointConfigurationsModel.OfficeHour);
            hourPointConfigurations.ChangeStartWorkTime(hourPointConfigurationsModel.StartWorkTime);
            hourPointConfigurations.ChangeToleranceTime(hourPointConfigurationsModel.ToleranceTime);
            hourPointConfigurations.ChangeBankOfHours(hourPointConfigurationsModel.BankOfHours);
            hourPointConfigurations.ChangeHourValue(hourPointConfigurationsModel.HourValue);

            TimeNotesUser identityUser = await _userManager.GetUserAsync(User);

            if (hourPointConfigurationsModel.UseAlexaSupport && !hourPointConfigurations.UseAlexaSupport)
            {
                hourPointConfigurations.ActiveAlexaSupport();
                await EnsurePasscode(hourPointConfigurationsModel, identityUser);
            }
            else
            {
                hourPointConfigurations.DisableAlexaSupport();
                identityUser.UnassingAlexaFromUser();
                await _userManager.UpdateAsync(identityUser);
            }

            _hourPointConfigurationsRepository.UpdateHourPointConfiguration(hourPointConfigurations);
            await _hourPointConfigurationsRepository.Commit();

            return(RedirectToAction(nameof(Index)));
        }