示例#1
0
        protected TResponse CreateServiceResponse <TResponse>(BaseWebServiceResponse webResponse) where TResponse : ResponseBase, new()
        {
            TResponse response = new TResponse();

            if (webResponse == null)
            {
                response.Success   = false;
                response.Message   = "Unknown Error!";
                response.ErrorCode = "Error_1";
                response.errorName = "Error in the returned  structure from web service";
                response.LogId     = "0";
            }
            else
            {
                response.Success   = webResponse.statusId == "1";
                response.Error     = webResponse.error;
                response.LogId     = webResponse.logId;
                response.errorName = webResponse.errorName;
                response.recordId  = webResponse.recordId;
                response.Summary   = webResponse.Details;
                if (!string.IsNullOrEmpty(webResponse.statusId))
                {
                    response.ErrorCode = "Error_" + webResponse.statusId.Substring(1);
                }
                if (webResponse.statusId.Substring(1) == null || webResponse.statusId == "0")
                {
                    response.ErrorCode = "Error_1";
                    response.Summary   = "Unknown Error!";
                    response.LogId     = "0";
                    response.errorName = "Error in the returned  structure from web service";
                }
            }

            return(response);
        }
示例#2
0
        public BaseWebServiceResponse Update(EditUserViewModel model)
        {
            var response = new BaseWebServiceResponse
            {
                Error = _userValidationService.ValidateUserDateOfBirth(
                    int.Parse(model.DateOfBirthDay),
                    int.Parse(model.DateOfBirthMonth),
                    int.Parse(model.DateOfBirthYear))
            };

            if (!string.IsNullOrEmpty(model.Password))
            {
                response.Error = _userValidationService.ValidatePassword(model.Password, model.ConfirmPassword);

                if (response.Error != null)
                {
                    return(response);
                }
            }

            var userDto = mapper.Map <EditUserViewModel, UserDTO>(model);

            response.ActionSuccessful = _userService.Update(userDto);
            response.SuccessMessage   = response.ActionSuccessful ?
                                        "User successfully updated" :
                                        string.Empty;
            return(response);
        }
示例#3
0
 /// <summary>
 /// Initializes the ActionResponse with the response parameter object
 /// </summary>
 /// <param name="response"></param>
 public AddProductViewModel(BaseWebServiceResponse response)
 {
     ActionResponse = response;
     Brands         = new List <SelectListItem>();
     Categories     = new List <SelectListItem>();
     Genders        = new List <SelectListItem>();
     ProductTypes   = new List <SelectListItem>();
 }
示例#4
0
 /// <summary>
 /// Initializes the ActionResponse with the response parameter object
 /// </summary>
 /// <param name="response"></param>
 public EditProductViewModel(BaseWebServiceResponse response)
 {
     ActionResponse = response;
     Brands         = new List <SelectListItem>();
     Categories     = new List <SelectListItem>();
     Genders        = new List <SelectListItem>();
     ProductTypes   = new List <SelectListItem>();
     ImagesSrc      = new List <string>();
 }
示例#5
0
        public BaseWebServiceResponse Add(AddUserViewModel model)
        {
            var response = new BaseWebServiceResponse()
            {
                Error = _userValidationService.ValidateUserDateOfBirth(
                    int.Parse(model.DateOfBirthDay),
                    int.Parse(model.DateOfBirthMonth),
                    int.Parse(model.DateOfBirthYear))
            };

            if (response.Error != null)
            {
                return(response);
            }

            if (_userValidationService.IsEmailInUse(model.Email))
            {
                response.Error = new ErrorServiceViewModel()
                {
                    Name    = "Email",
                    Message = "Email is already in use."
                };
                return(response);
            }

            response.Error = _userValidationService.ValidatePassword(model.Password, model.ConfirmPassword);

            var newUser = _userService.Create(
                new UserDTO()
            {
                Email       = model.Email,
                FirstName   = model.FirstName,
                LastName    = model.LastName,
                DateOfBirth = new DateTime(
                    Convert.ToInt32(model.DateOfBirthYear),
                    Convert.ToInt32(model.DateOfBirthMonth),
                    Convert.ToInt32(model.DateOfBirthDay)),
                IsSubscribed = model.IsSubscribed,
                Password     = model.Password
            });

            if (newUser == null || newUser.Id == 0)
            {
                _userService.TryRollbackUser(newUser);
                response.Error = new ErrorServiceViewModel()
                {
                    Name    = "User",
                    Message = "There was a problem creating the user. Please try again or contact support."
                };
                //TODO: Create logging service at Service layer and log error
                return(response);
            }

            response.ActionSuccessful = true;
            return(response);
        }
        public IActionResult Delete(BrandViewModel model)
        {
            BaseWebServiceResponse response = _brandWebService.Delete(model.Id);
            TempData[BrandActionName] = JsonConvert.SerializeObject(response);

            if (!response.ActionSuccessful)
            {
                return View($"{BrandsViewFolder}/Index.cshtml", model);
            }

            return RedirectToAction("Index", "Brands");
        }
示例#7
0
        public IActionResult Delete(CategoryItemViewModel model)
        {
            BaseWebServiceResponse response = _categoryWebService.Delete(model.Id);

            TempData[CategoryActionName] = response;

            if (!response.ActionSuccessful)
            {
                return(View($"{CategoryActionName}/Index.cshtml", model));
            }

            return(RedirectToAction("Index", "Categories"));
        }
示例#8
0
        public IActionResult Delete(RoleViewModel model)
        {
            BaseWebServiceResponse response = _roleWebService.Delete(model.Id);

            TempData[RolesViewFolder] = JsonConvert.SerializeObject(response);

            if (!response.ActionSuccessful)
            {
                return(View($"{RolesViewFolder}/Index.cshtml", model));
            }

            return(RedirectToAction("Index", "Roles"));
        }
示例#9
0
        public IActionResult Delete(ProductsViewModel model)
        {
            BaseWebServiceResponse response = _productWebService.Delete(model.Id);

            TempData[ProductActionName] = JsonConvert.SerializeObject(response);

            if (!response.ActionSuccessful)
            {
                return(View($"{ProductsViewFolder}/Index.cshtml", model));
            }

            return(RedirectToAction("Index", "products"));
        }
示例#10
0
        protected TResponse CreateServiceResponse <TResponse>(BaseWebServiceResponse webResponse) where TResponse : ResponseBase, new()
        {
            TResponse response = new TResponse();

            if (webResponse == null)
            {
                response.Success = false;
                response.Message = "Unknown Error!";
            }
            else
            {
                response.Success = webResponse.statusId == "1";
                response.Summary = webResponse.Details;
            }

            return(response);
        }
        public IActionResult AddBrand(AddBrandViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return View($"{BrandsViewFolder}/Add.cshtml", model);
            }

            BaseWebServiceResponse response = _brandWebService.Add(model);
            TempData[BrandActionName] = JsonConvert.SerializeObject(response);

            if (!response.ActionSuccessful)
            {
                model.ActionResponse = response;
                return View($"{BrandsViewFolder}/Add.cshtml", model);
            }
            
            return RedirectToAction("Index", "Brands");
        }
        public IActionResult Update(EditBrandViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model = _brandWebService.GetBrandById(model.Id);
                return View($"{BrandsViewFolder}/Edit.cshtml", model);
            }

            BaseWebServiceResponse response = _brandWebService.Update(model);
            TempData[BrandActionName] = JsonConvert.SerializeObject(response);

            if (!response.ActionSuccessful)
            {
                return View($"{BrandsViewFolder}/Index.cshtml", model);
            }

            return RedirectToAction("Index", "Brands");
        }
示例#13
0
        public IActionResult Update(EditProductViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model = _productWebService.GetEditProductById(model.Id);
                return(View($"{ProductsViewFolder}/Edit/{model.Id}", model));
            }

            BaseWebServiceResponse response = _productWebService.Update(model);

            TempData[ProductActionName] = JsonConvert.SerializeObject(response);

            if (!response.ActionSuccessful)
            {
                return(View($"{ProductsViewFolder}/Edit.cshtml", model));
            }

            return(RedirectToAction("Index", "Products"));
        }
        public IActionResult Update(EditUserViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model = _userWebService.GetEditUserModel(model.Id);
                return(View($"{UsersViewFolder}/Edit.cshtml", model));
            }

            BaseWebServiceResponse response = _userWebService.Update(model);

            TempData[UserActionName] = JsonConvert.SerializeObject(response);

            if (!response.ActionSuccessful)
            {
                return(View($"{UsersViewFolder}/Edit.cshtml", model));
            }

            return(RedirectToAction("Index", "Users"));
        }
示例#15
0
        public IActionResult AddCategory(AddCategoryViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View($"{CategoriesViewFolder}/Add.cshtml", model));
            }

            BaseWebServiceResponse response = _categoryWebService.Add(model);

            TempData[CategoryActionName] = JsonConvert.SerializeObject(response);

            if (!response.ActionSuccessful)
            {
                model.ActionResponse = response;
                return(View($"{CategoriesViewFolder}/Add.cshtml", model));
            }

            return(RedirectToAction("Index", "Categories"));
        }
示例#16
0
        public IActionResult AddProduct(AddProductViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model = _productWebService.GetAddProductsContent(model);
                return(View($"{ProductsViewFolder}/Add.cshtml", model));
            }

            BaseWebServiceResponse response = _productWebService.Add(model);

            TempData[ProductActionName] = JsonConvert.SerializeObject(response);

            if (!response.ActionSuccessful)
            {
                model.ActionResponse = response;
                return(View($"{ProductsViewFolder}/Add.cshtml", model));
            }

            return(RedirectToAction("Index", "Products"));
        }
示例#17
0
        public BaseWebServiceResponse Update(EditRoleViewModel model)
        {
            var roleDto        = mapper.Map <EditRoleViewModel, RoleDTO>(model);
            var roleNameExists = _roleService.RoleNameExists(roleDto);

            var response = new BaseWebServiceResponse
            {
                ActionSuccessful = !roleNameExists,
                Error            = roleNameExists ?
                                   new ErrorServiceViewModel()
                {
                    Name    = "Role Name",
                    Message = "Role Name is already in use."
                } :
                null
            };

            if (response.Error != null)
            {
                return(response);
            }

            var roleAdded = _roleService.Update(roleDto);

            if (!roleAdded)
            {
                response.ActionSuccessful = false;
                response.Error            = roleAdded ?
                                            null :
                                            new ErrorServiceViewModel()
                {
                    Name    = "Role",
                    Message = "There was a problem updating the Role. We have been notified of the error but please try again."
                };
            }

            response.SuccessMessage   = "Role updated successfully!";
            response.ActionSuccessful = true;
            return(response);
        }
        public BaseWebServiceResponse Add(AddCategoryViewModel model)
        {
            var categoryDto    = mapper.Map <AddCategoryViewModel, CategoryDTO>(model);
            var categoryExists = _categoryService.CategoryExists(categoryDto);

            var response = new BaseWebServiceResponse
            {
                ActionSuccessful = !categoryExists,
                Error            = categoryExists ?
                                   new ErrorServiceViewModel()
                {
                    Name    = "Category Name",
                    Message = "Category Name is already in use."
                } :
                null
            };

            if (response.Error != null)
            {
                return(response);
            }

            var categoryAdded = _categoryService.Add(categoryDto);

            if (!categoryAdded)
            {
                response.ActionSuccessful = false;
                response.Error            = categoryAdded ?
                                            null :
                                            new ErrorServiceViewModel()
                {
                    Name    = "Category",
                    Message = "There was a problem adding the Category. We have been notified of the error but please try again."
                };
            }

            response.ActionSuccessful = true;
            response.SuccessMessage   = "Category added successfully!";
            return(response);
        }
        public BaseWebServiceResponse Update(EditBrandViewModel model)
        {
            var brandDto        = mapper.Map <EditBrandViewModel, BrandDTO>(model);
            var brandNameExists = _brandService.BrandNameExists(brandDto);

            var response = new BaseWebServiceResponse
            {
                ActionSuccessful = brandNameExists,
                Error            = brandNameExists ?
                                   null :
                                   new ErrorServiceViewModel()
                {
                    Name    = "Brand Name",
                    Message = "Brand Name is already in use."
                }
            };

            if (response.Error != null)
            {
                return(response);
            }

            var brandAdded = _brandService.Update(brandDto);

            if (!brandAdded)
            {
                response.ActionSuccessful = false;
                response.Error            = brandNameExists ?
                                            null :
                                            new ErrorServiceViewModel()
                {
                    Name    = "Brand",
                    Message = "There was a problem updating the Brand. We have been notified of the error but please try again."
                };
            }

            response.ActionSuccessful = true;
            response.SuccessMessage   = "Brand successfully updated";
            return(response);
        }
        public IActionResult Register(RegisterViewModel model)
        {
            BuildBaseModel(model);
            model.TopMenuItems = _menuWebService.GetSubMenuItems();
            if (!ModelState.IsValid)
            {
                return(View("Index", model));
            }

            BaseWebServiceResponse response = _userWebService.Register(model);

            if (!response.ActionSuccessful)
            {
                ModelState.AddModelError(response.Error.Name, response.Error.Message);
                return(View("Index", model));
            }

            UpdateUserSession(JsonConvert.DeserializeObject <UserViewModel>(response.JsonResponseObject));

            BuildBaseModel(model);
            TempData["NewUser"] = "******";
            return(RedirectToAction("Index", "Home"));
        }
示例#21
0
        public BaseWebServiceResponse Delete(int userId)
        {
            var isUserDeleted = _userService.Delete(userId);

            var response = new BaseWebServiceResponse
            {
                ActionSuccessful = isUserDeleted,
                SuccessMessage   = isUserDeleted ?
                                   "User Deleted!" :
                                   string.Empty,
                Error = isUserDeleted ?
                        null :
                        new ErrorServiceViewModel()
                {
                    Name    = "UserAction",
                    Message = isUserDeleted ?
                              string.Empty :
                              "There was a problem deleting the user!"
                }
            };

            return(response);
        }
        public BaseWebServiceResponse Delete(int categoryId)
        {
            var categoryHasProducts = _categoryService.CategoryHasProducts(categoryId);

            var response = new BaseWebServiceResponse()
            {
                ActionSuccessful = !categoryHasProducts,
                Error            = categoryHasProducts ?
                                   new ErrorServiceViewModel()
                {
                    Name    = "Category",
                    Message = "This category is currently linked to active products, please ensure no products are associated with the category before deletion."
                } :
                null
            };

            if (categoryHasProducts)
            {
                return(response);
            }

            var isCategoryDeleted = _categoryService.Delete(categoryId);

            response.ActionSuccessful = isCategoryDeleted;
            response.SuccessMessage   = isCategoryDeleted ?
                                        "Category Deleted!" :
                                        string.Empty;
            response.Error = isCategoryDeleted ?
                             null :
                             new ErrorServiceViewModel
            {
                Name    = "Category",
                Message = "There was an issue deleting the category. We have been notified of the error but please try again."
            };

            return(response);
        }
        public BaseWebServiceResponse Delete(int brandId)
        {
            var brandHasProducts = _brandService.BrandHasProducts(brandId);

            var response = new BaseWebServiceResponse()
            {
                ActionSuccessful = !brandHasProducts,
                Error            = brandHasProducts ?
                                   new ErrorServiceViewModel()
                {
                    Name    = "Brand",
                    Message = "This brand is currently linked to active products, please ensure no products are associated with the brand before deletion."
                } :
                null
            };

            if (brandHasProducts)
            {
                return(response);
            }

            var isBrandDeleted = _brandService.Delete(brandId);

            response.ActionSuccessful = isBrandDeleted;
            response.SuccessMessage   = isBrandDeleted ?
                                        "Brand Deleted!" :
                                        string.Empty;
            response.Error = isBrandDeleted ?
                             null :
                             new ErrorServiceViewModel
            {
                Name    = "Brand",
                Message = "There was an issue deleting the brand. We have been notified of the error but please try again."
            };

            return(response);
        }
示例#24
0
        public BaseWebServiceResponse Delete(int roleId)
        {
            var roleHasUsers = _roleService.RoleHasUsers(roleId);

            var response = new BaseWebServiceResponse()
            {
                ActionSuccessful = !roleHasUsers,
                Error            = roleHasUsers ?
                                   new ErrorServiceViewModel()
                {
                    Name    = "Role",
                    Message = "This role is currently linked to active users, please ensure no products are associated with the brand before deletion."
                } :
                null
            };

            if (roleHasUsers)
            {
                return(response);
            }

            var isRoleDeleted = _roleService.Delete(roleId);

            response.ActionSuccessful = isRoleDeleted;
            response.SuccessMessage   = isRoleDeleted ?
                                        "Role Deleted!" :
                                        string.Empty;
            response.Error = isRoleDeleted ?
                             null :
                             new ErrorServiceViewModel
            {
                Name    = "Role",
                Message = "There was an issue deleting the role. We have been notified of the error but please try again."
            };

            return(response);
        }
示例#25
0
        public BaseWebServiceResponse Update(EditProductViewModel model)
        {
            var response = new BaseWebServiceResponse();

            //TODO: Refactor this - Move this check to a new service => ProductValidationService?
            if (_productService.ProductNameExists(model.ProductName, model.Id))
            {
                response.Error.Name    = "Product Name";
                response.Error.Message = "Product Name exists";

                return(response);
            }

            decimal price;

            if (!decimal.TryParse(model.Price, out price))
            {
                response.ActionSuccessful = false;
                response.Error.Name       = "Price";
                response.Error.Message    = "Price must be a decimal value e.g. 100.00";

                return(response);
            }

            List <IFormFile> listFiles = new List <IFormFile>()
            {
                model.Image1,
                model.Image2,
                model.Image3,
                model.Image4,
            };

            var productDto = mapper.Map <EditProductViewModel, ProductDTO>(model);

            bool fileExists = _fileValidationWebService.FileExists(listFiles);

            if (fileExists)
            {
                bool filesAreJpg = _fileValidationWebService.IsFileFormatJpg(listFiles);
                if (!filesAreJpg)
                {
                    response.Error.Name    = "Images";
                    response.Error.Message = "Files must be jpg file format.";

                    return(response);
                }
            }
            else
            {
                //TODO: Refactor this => Duplicated below
                productDto.Images.Add(new ProductImageDTO()
                {
                    Image = model.ImagesBytes[0]
                });
                productDto.Images.Add(new ProductImageDTO()
                {
                    Image = model.ImagesBytes[1]
                });
                productDto.Images.Add(new ProductImageDTO()
                {
                    Image = model.ImagesBytes[2]
                });
                productDto.Images.Add(new ProductImageDTO()
                {
                    Image = model.ImagesBytes[3]
                });
            }

            //TODO: Refactor this - move Mapper or Helper
            productDto.Gender = _genderService.GetGenderById(Convert.ToInt32(model.SelectedGender));
            productDto.Price  = price;

            //TODO: Refactor this - move Mapper or Helper
            if (model.HeroImage != null)
            {
                productDto.HeroImage = ProductHelper.WriteImageToBytes(model.HeroImage);
            }

            //TODO: Refactor this - move to Helper - refactor e.g. model.Image1,2,3 => .Add to list return list
            if (fileExists)
            {
                if (model.Image1 != null)
                {
                    productDto.Images.Add(new ProductImageDTO()
                    {
                        Image = ProductHelper.WriteImageToBytes(model.Image1)
                    });
                }

                if (model.Image2 != null)
                {
                    productDto.Images.Add(new ProductImageDTO()
                    {
                        Image = ProductHelper.WriteImageToBytes(model.Image2)
                    });
                }

                if (model.Image3 != null)
                {
                    productDto.Images.Add(new ProductImageDTO()
                    {
                        Image = ProductHelper.WriteImageToBytes(model.Image3)
                    });
                }

                if (model.Image4 != null)
                {
                    productDto.Images.Add(new ProductImageDTO()
                    {
                        Image = ProductHelper.WriteImageToBytes(model.Image4)
                    });
                }
            }
            productDto.Sizes = JsonConvert.DeserializeObject <List <ProductSizeDTO> >(model.SizesJson);

            if (!_productService.Update(productDto))
            {
                response.Error.Name    = "Add Product";
                response.Error.Message = "There was a problem while attempting to add the Product, please try again. If this problem persists, please contact support.";

                return(response);
            }

            response.ActionSuccessful = true;
            response.SuccessMessage   = "Product successfully updated";
            return(response);
        }
示例#26
0
        public BaseWebServiceResponse Add(AddProductViewModel model)
        {
            var response = new BaseWebServiceResponse();

            if (_productService.ProductNameExists(model.ProductName))
            {
                response.Error.Name    = "Product Name";
                response.Error.Message = "Product Name exists";

                return(response);
            }

            decimal price;

            if (!decimal.TryParse(model.Price, out price))
            {
                response.ActionSuccessful = false;
                response.Error.Name       = "Price";
                response.Error.Message    = "Price must be a decimal value e.g. 100.00";

                return(response);
            }

            List <IFormFile> listFiles = new List <IFormFile>()
            {
                model.Image1,
                model.Image2,
                model.Image3,
                model.Image4,
            };

            bool fileExists = _fileValidationWebService.FileExists(listFiles);

            if (!fileExists)
            {
                response.Error.Name    = "Images";
                response.Error.Message = "At least one Image must be uploaded.";

                return(response);
            }

            bool filesAreJpg = _fileValidationWebService.IsFileFormatJpg(listFiles);

            if (!filesAreJpg)
            {
                response.Error.Name    = "Images";
                response.Error.Message = "Files must be jpg file format.";

                return(response);
            }

            //TODO: Refactor this - Mapper or Helper
            var productDto = mapper.Map <AddProductViewModel, ProductDTO>(model);

            productDto.Gender    = _genderService.GetGenderById(Convert.ToInt32(model.SelectedGender));
            productDto.Price     = price;
            productDto.HeroImage = ProductHelper.WriteImageToBytes(model.HeroImage);
            productDto.Images.Add(new ProductImageDTO()
            {
                Image = ProductHelper.WriteImageToBytes(model.Image1)
            });
            productDto.Images.Add(new ProductImageDTO()
            {
                Image = ProductHelper.WriteImageToBytes(model.Image2)
            });
            productDto.Images.Add(new ProductImageDTO()
            {
                Image = ProductHelper.WriteImageToBytes(model.Image3)
            });
            productDto.Images.Add(new ProductImageDTO()
            {
                Image = ProductHelper.WriteImageToBytes(model.Image4)
            });
            productDto.Sizes = JsonConvert.DeserializeObject <List <ProductSizeDTO> >(model.SizesJson);

            if (!_productService.Add(productDto))
            {
                response.Error.Name    = "Add Product";
                response.Error.Message = "There was a problem while attempting to add the Product, please try again. If this problem persists, please contact support.";

                return(response);
            }

            response.ActionSuccessful = true;
            response.SuccessMessage   = "Product added successfully!";
            return(response);
        }
示例#27
0
        public BaseWebServiceResponse Register(RegisterViewModel model)
        {
            var response = new BaseWebServiceResponse
            {
                Error = _userValidationService.ValidateUserDateOfBirth(
                    int.Parse(model.DateOfBirthDay),
                    int.Parse(model.DateOfBirthMonth),
                    int.Parse(model.DateOfBirthYear))
            };

            if (response.Error != null)
            {
                return(response);
            }

            if (_userValidationService.IsEmailInUse(model.Email))
            {
                response.Error = new ErrorServiceViewModel()
                {
                    Name    = "Email",
                    Message = "Email is already in use."
                };
                return(response);
            }

            response.Error = _userValidationService.ValidatePassword(model.Password, model.ConfirmPassword);

            if (response.Error != null)
            {
                return(response);
            }

            var newUser = _userService.Create(
                new UserDTO()
            {
                Email       = model.Email,
                FirstName   = model.FirstName,
                LastName    = model.LastName,
                DateOfBirth = new DateTime(
                    Convert.ToInt32(model.DateOfBirthYear),
                    Convert.ToInt32(model.DateOfBirthMonth),
                    Convert.ToInt32(model.DateOfBirthDay)),
                IsSubscribed = model.IsSubscribed,
                Password     = model.Password
            });

            if (newUser == null || newUser.Id == 0)
            {
                //TODO: Create logging service at Service layer and log error
                _userService.TryRollbackUser(newUser);
                response.Error = new ErrorServiceViewModel()
                {
                    Name    = "User",
                    Message = "There was a problem creating your account. We have been notified of the error but please try again."
                };

                return(response);
            }

            response.JsonResponseObject = JsonConvert.SerializeObject(newUser);
            response.ActionSuccessful   = true;
            return(response);
        }