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); }
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") } }; }
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; } }