public Task <ResultDto> SendCallbackMessage(CallbackVm viewModel)
        {
            var callbackDetailDto = new CallbackDetailsDto()
            {
                LowellReferenceNumber = viewModel.LowellReferenceNumber,
                AccountHolderStatus   = viewModel.AccountHolderStatus,
                FullName = viewModel.FullName,
                PreferredTelephoneNumber = viewModel.PreferredTelephoneNumber,
                CallmeNow    = viewModel.CallmeNow == "CallMeNow",
                CallbackDate = viewModel.CallbackDate != null ? viewModel.CallbackDate.Value : DateTime.MinValue,
                TimeSlot     = viewModel.TimeSlot
            };

            return(_apiGateway.SendCallbackMessage(callbackDetailDto));
        }
        public CallbackVm CreateNewCallbackVm()
        {
            var accountHolderStatuses = GetAccountHoldersStatus();
            var callbackTimeStatuses  = GetCallbackTimeStatus();

            var callbackVm = new CallbackVm
            {
                AccountHolderStatuses = accountHolderStatuses,
                CallbackOptions       = callbackTimeStatuses
            };

            PopulateTimeComponents(callbackVm);

            return(callbackVm);
        }
示例#3
0
        public void Initialise()
        {
            _validator = new CallbackVmValidator();
            var date = DateTime.Now.AddYears(-24);

            _callbackVm = new CallbackVm()
            {
                LowellReferenceNumber = "A100432489",
                AccountHolderStatus   = "accountholder",
                FullName = "John Smith",
                PreferredTelephoneNumber = "+447123456789",
                TimeSlot = "10:00 AM - 12:00 PM",
                TimeSlotsFirstAvailableDay = new List <KeyValuePair <string, string> > {
                    new KeyValuePair <string, string>("a", "a")
                }
            };
        }
示例#4
0
        public async Task <ActionResult> SendCallback(CallbackVm model)
        {
            if (!ModelState.IsValid)
            {
                Logger.LogInformation("Modelstate is NOT valid. Return data back to Callback view.");
            }

            else
            {
                var result = await _callbackService.SendCallbackMessage(model);

                if (result.IsSuccessful)
                {
                    model.HasCallbackRequestBeenSentSuccessfully = true;
                }

                model.HasCallbackRequestBeenSentSuccessfully = true;
            }

            return(View("Index", model));
        }
        private void PopulateTimeComponents(CallbackVm existingVm)
        {
            DateTime currDate = DateTime.UtcNow.ToLocalTime();

            existingVm.TimeSlotsSunday.Add(new KeyValuePair <string, string>(null, "Time slot"));

            if (currDate.DayOfWeek == DayOfWeek.Saturday)
            {
                existingVm.TimeSlotsToday = GetTimeSlots(
                    ToDateTime(_callbackSetting.TimeSlotSaturdayStartTime),
                    ToDateTime(_callbackSetting.TimeSlotSaturdayEndTime),
                    currDate,
                    2);
            }
            else if (currDate.DayOfWeek != DayOfWeek.Sunday)
            {
                existingVm.TimeSlotsToday = GetTimeSlots(
                    ToDateTime(_callbackSetting.TimeSlotWeekdayStartTime),
                    ToDateTime(_callbackSetting.TimeSlotWeekdayEndTime),
                    currDate,
                    2);
            }

            existingVm.FirstAvailableDate = currDate.Date.ToString("MM/dd/yyyy");

            existingVm.TimeSlotsWeekday = _getTimeSlotsProcess.Build(
                _callbackSetting.TimeSlotWeekdayStartTime,
                _callbackSetting.TimeSlotWeekdayEndTime);

            existingVm.TimeSlotsSaturday = _getTimeSlotsProcess.Build(
                _callbackSetting.TimeSlotSaturdayStartTime,
                _callbackSetting.TimeSlotSaturdayEndTime);

            existingVm.SlotsAvailableForCurrentDay =
                existingVm.TimeSlotsToday == null ? 0 : existingVm.TimeSlotsToday.Count;

            if (existingVm.SlotsAvailableForCurrentDay == 1)
            {
                var nextDay = currDate.Date.AddDays(1);

                if (nextDay.DayOfWeek == DayOfWeek.Sunday)
                {
                    nextDay = currDate.Date.AddDays(1);
                }

                existingVm.FirstAvailableDate = nextDay.ToString("MM/dd/yyyy");

                if (nextDay.DayOfWeek == DayOfWeek.Saturday)
                {
                    existingVm.TimeSlotsFirstAvailableDay = GetTimeSlots(
                        nextDay.Add(_callbackSetting.TimeSlotSaturdayStartTime),
                        nextDay.Add(_callbackSetting.TimeSlotSaturdayEndTime),
                        nextDay,
                        2);
                }
                else
                {
                    existingVm.TimeSlotsFirstAvailableDay = GetTimeSlots(
                        nextDay.Add(_callbackSetting.TimeSlotWeekdayStartTime),
                        nextDay.Add(_callbackSetting.TimeSlotWeekdayEndTime),
                        nextDay,
                        2);
                }
            }
            else
            {
                existingVm.TimeSlotsFirstAvailableDay = existingVm.TimeSlotsToday;
            }
        }