private ActionResult ExecuteAction(RemittanceCashPickup model, string approvalStatus)
        {
            ValidationStateDictionary states = new ValidationStateDictionary();

            var models           = _cashPickupService.RetrieveReference(model.ReferenceNumber);
            var dbApprovalStatus = Constants.ApprovalStatus.Pending;

            //the user that put a record in pending mode will always be stored as initiated by - meaning the db will be updated.
            var permitEdit = Access.CanEdit(Constants.Modules.RemitlyPayout, model.InitiatedBy, dbApprovalStatus, model.IsDeleted);

            if (permitEdit)
            {
                model.ApprovedStatus = approvalStatus;

                var updated = _cashPickupService.EditRemittance(model.ReferenceNumber);
                if (!states.IsValid)
                {
                    model.UserRole = new Role()
                    {
                        RoleId = model.RoleId
                    };
                    ModelState.AddModelErrors(states);
                    var errorList = ValidationHelper.BuildModelErrorList(states);
                    SetAuditInfo(Helper.StripHtml(errorList, true), string.Empty);
                    return(View(model));
                }
                else
                {
                    if (updated == null)
                    {
                        Warning(Constants.Messages.ConcurrencyError, true);
                    }
                    else
                    {
                        Success(Constants.Messages.SaveSuccessful, true);
                    }
                    return(RedirectToAction("Index"));
                }
            }
            else
            {
                Warning(Constants.Messages.EditNotPermittedError, true);
                return(RedirectToAction("Index"));
            }
        }
        public ActionResult EditRemitlyCashPayout(RemittanceCashPickup model)
        {
            //the form to to process thre retrieved reference number
            using (var client = new HttpClient())
            {
                string url = ConfigurationManager.AppSettings["RemitlyBaseURL"];

                var content = new MultipartFormDataContent();
                client.BaseAddress = new Uri(url);
                var responseTask = client.PostAsync($"/IMTOAPI.Project/Remitly/UpdateTransfer/", content);
                responseTask.Wait();

                var result = responseTask.Result;
                if (result.IsSuccessStatusCode)
                {
                    TempData["SuccessMessage"] = $"Cash Pickup was successfully updated.";

                    return(RedirectToAction("Index", new { CashPickupIdId = model.Id }));
                }

                if ((int)result.StatusCode == 422)
                {
                    ModelState.AddModelError("", "CashPickup entry Already Exists!");
                }
                else
                {
                    ModelState.AddModelError("", "Some kind of error. CashPickup not updated!");
                }
            }

            var cashPicks = _cashPickupService.EditRemittance(model.ReferenceNumber);

            return(View(cashPicks));
            //here teller accept and record customer identity.
            //system validate and send for approval

            //return View();
        }
 public ActionResult ApproveRemitlyCashPayout(RemittanceCashPickup model)
 {
     return(ExecuteAction(model, Constants.ApprovalStatus.Approved));
 }
 public ActionResult RejectForCorrectionRemitlyCashPayout(RemittanceCashPickup model)
 {
     return(ExecuteAction(model, Constants.ApprovalStatus.RejectedForCorrection));
 }