public UserOperationsController(IOperatingUserRepo userRepo,
                                 OperatingUserViewModel userModel,
                                 VerificationListViewModel verificationListModel,
                                 IUserImageHelper imageHelper)
 {
     _userRepo = userRepo;
     model     = userModel;
     this.verificationListModel = verificationListModel;
     this.imageHelper           = imageHelper;
 }
        public async Task <ActionResult> UserProfile(UserProfileViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var userFound = await _userRepo.Get(model.UserID);

                    if (userFound == null)
                    {
                        return(HttpNotFound());
                    }

                    //If user Added a new Profile Image
                    if (model.ProfileImageFile != null)
                    {
                        var profileImage = model.ProfileImageFile;

                        if (imageHelper.isValidFileUpload(profileImage))
                        {
                            imageHelper.SetUserProfileImage
                                (profileImage, userFound);
                        }
                        else
                        {
                            ModelState.AddModelError(string.Empty,
                                                     "Please Provide a valid File type");

                            model = GetDefaultProfileViewModel(userFound);
                            return(View(model));
                        }
                    }


                    //If user Added a new Driving License
                    if (model.ProfileDriverLicense != null)
                    {
                        var licenseFile = model.ProfileDriverLicense;

                        if (imageHelper.IsDrivingLicenseValid
                                (licenseFile,
                                model.LicenseExpiryDate, ModelState))
                        {
                            imageHelper.SetProfileDriverLicense
                                (licenseFile,
                                userFound, model.LicenseExpiryDate);
                        }
                        else
                        {
                            model = GetDefaultProfileViewModel(userFound);

                            return(View(model));
                        }
                    }

                    var res = await _userRepo.SaveUserImages(userFound);

                    return(RedirectToAction("UserProfile", new { id = userFound.ID }));
                }

                return(View(model));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, ex.Message);
                return(View(model));
            }
        }