Esempio n. 1
0
        public async Task <IActionResult> Index(AccountsModel accountsModel)
        {
            if (ModelState.IsValid)
            {
                //verify password match
                string RepeatPassword = Request.Form["RepeatPassword"];
                if (!functions.PasswordsMatch(accountsModel.Password, RepeatPassword))
                {
                    TempData["ErrorMessage"] = "Passwords do not match";
                    return(View(accountsModel));
                }


                accountsModel.Password = BCrypt.Net.BCrypt.HashPassword(accountsModel.Password);
                //Default registration values
                accountsModel.AccountID           = functions.GetUinqueId();
                accountsModel.DirectoryName       = functions.GenerateDirectoryName(accountsModel.Email);
                accountsModel.Oauth               = 0;
                accountsModel.AccountVerification = 0;
                accountsModel.Status              = 0;
                accountsModel.UpdateDate          = DateTime.Now;

                _context.Add(accountsModel);
                await _context.SaveChangesAsync();

                TempData["SuccessMessage"] = "Registration was successful";
                return(RedirectToAction("Index", "SignIn"));
            }
            TempData["ErrorMessage"] = "There was an error processing your request. Please try again. If this error persists, please send an email.";
            return(View(accountsModel));
        }
        public async Task <IActionResult> NewPost(ProductsModel productsModel)
        {
            string AccountID = _sessionManager.LoginAccountId;

            //Set ViewBags data for form return data
            ViewBag.CurrencyList = functions.GetCurrencyList();
            ViewBag.CategoryList = functions.GetCategoryList();
            ViewBag.StoresList   = functions.GetStoresList(_sessionManager.LoginAccountId);

            if (ModelState.IsValid)
            {
                try
                {
                    //Set other product data
                    productsModel.ProductID         = functions.GetUinqueId();
                    productsModel.AccountID         = _sessionManager.LoginAccountId;
                    productsModel.UniqueProductName = functions.GenerateUniqueProductName(productsModel.ProductName);
                    productsModel.FeaturedPost      = (string.IsNullOrEmpty(HttpContext.Request.Form["FeaturedPost"])) ? 0 : functions.Int32Parse(HttpContext.Request.Form["FeaturedPost"]);
                    productsModel.ApproveStatus     = _systemConfiguration.defaultProductApproveStatus;
                    productsModel.UpdatedBy         = _sessionManager.LoginUsername;
                    productsModel.UpdateDate        = DateTime.Now;
                    productsModel.DateAdded         = DateTime.Now;


                    if (!string.IsNullOrEmpty(HttpContext.Request.Form["EditPost"]) && HttpContext.Request.Form["EditPost"] == "True")
                    {
                        //update post
                        productsModel.ID        = functions.Int32Parse(HttpContext.Request.Form["ID"]);
                        productsModel.ProductID = HttpContext.Request.Form["ProductID"];

                        _context.Update(productsModel);
                        await _context.SaveChangesAsync();

                        //remove current post images
                        functions.DeleteProductImages(AccountID, productsModel.ProductID);
                        functions.DeleteTableData("ProductImages", "ProductID", productsModel.ProductID, _systemConfiguration.connectionString);
                    }
                    else
                    {
                        //add post
                        _context.Add(productsModel);
                        await _context.SaveChangesAsync();

                        //add product stock
                        functions.AddTableData("ProductStock", "ProductID", _systemConfiguration.defaultProductStock.ToString(), _systemConfiguration.connectionString);
                    }


                    //Image watermark from config file
                    string TextWaterMark  = _systemConfiguration.textWaterMark;
                    string ImageWaterMark = _systemConfiguration.imageWatermark;
                    int    ImageHeight    = _systemConfiguration.uploadImageDefaultHeight;
                    int    ImageWidth     = _systemConfiguration.uploadImageDefaultWidth;

                    //Get account directory name
                    var DirectoryName = functions.GetAccountData(_sessionManager.LoginAccountId, "DirectoryName");
                    var SavePath      = @"wwwroot\\files\\" + DirectoryName + "\\products";

                    int TotalUploads = 0;
                    //Loop through files and upload
                    foreach (var file in Request.Form.Files)
                    {
                        if (file.Length > 0)
                        {
                            using (var stream = file.OpenReadStream())
                            {
                                using (var img = Image.FromStream(stream))
                                {
                                    string NewFileName = functions.RandomString(4) + "-" + file.FileName;
                                    if (!string.IsNullOrEmpty(ImageWaterMark))
                                    {
                                        img.ScaleAndCrop(ImageWidth, ImageHeight)
                                        .AddImageWatermark(@"wwwroot\files\images\" + ImageWaterMark)
                                        .AddTextWatermark(TextWaterMark)
                                        .SaveAs(SavePath + "\\" + NewFileName);
                                    }
                                    else
                                    {
                                        try
                                        {
                                            img.ScaleAndCrop(ImageWidth, ImageHeight)
                                            .AddTextWatermark(TextWaterMark)
                                            .SaveAs(SavePath + "\\" + NewFileName);
                                        }
                                        catch (Exception)
                                        {
                                            //exclude watermark
                                            img.ScaleAndCrop(ImageWidth, ImageHeight)
                                            .SaveAs(SavePath + "\\" + NewFileName);
                                        }
                                    }

                                    //Add image to ProductImages table
                                    functions.AddProductImages(productsModel.ProductID, NewFileName, null);
                                    TotalUploads++;
                                }
                            }
                        }
                    }

                    //Add product video (if added)
                    var ProductVideo = Request.Form["ProductVideo"];
                    if (!string.IsNullOrEmpty(ProductVideo.ToString()))
                    {
                        string NewFileName = functions.RandomString(4) + "-" + ProductVideo;

                        //Add to ProductVideo table
                        functions.AddProductVideo(productsModel.ProductID, NewFileName, null);
                    }

                    TempData["SuccessMessage"] = @$ "Product added successfully.  {TotalUploads} images uploaded. 
                        <br/> Add product details here: <a href='/Account/AddProductColors/{productsModel.ProductID}' class='mr-2'>Product Colors</a>
                        <a href='/Account/AddProductSizes/{productsModel.ProductID}'>Product Sizes</a>";

                    return(RedirectToAction("ManagePosts", "Account"));
                }