public IActionResult Index(string id) { if (string.IsNullOrEmpty(id)) { return(RedirectToAction("Index", "Home")); } string AccountID = ""; try { AccountID = _context.Accounts.Where(s => s.DirectoryName == id).FirstOrDefault().AccountID; var accountDetailsModel = _context.AccountDetails .FirstOrDefault(m => m.AccountID == AccountID); if (accountDetailsModel == null) { return(NotFound()); } ViewBag.AuthorPosts = _context.vwPostsApproved.Where(s => s.PostAuthor == AccountID).OrderByDescending(s => s.DateApproved).Take(20); ViewBag.ConnectionString = _systemConfiguration.connectionString; ViewData["Title"] = "Account Details - " + functions.GetAccountData(AccountID, "FullName"); ViewBag.FullName = functions.GetAccountData(AccountID, "FullName"); return(View(accountDetailsModel)); } catch (Exception ex) { //Log Error _logger.LogInformation("View Author Error: " + ex.ToString()); TempData["ErrorMessage"] = "There was an error processing your request. Please try again. If this error persists, please send an email."; } return(RedirectToAction("Index", "Home")); }
public IActionResult ResetPossword() { string ForgotEmail = HttpContext.Request.Form["ForgotPasswordEmail"]; string[] ValidationInputs = { ForgotEmail }; if (!functions.ValidateInputs(ValidationInputs)) { TempData["ErrorMessage"] = "Validation error. Email required."; return(RedirectToAction("Index", "SignIn")); } if (!_context.Accounts.Any(s => s.Email == ForgotEmail)) { TempData["ErrorMessage"] = "The email provided does not exist in our records."; return(RedirectToAction("Index", "SignIn")); } string AccountID = _context.Accounts.Where(s => s.Email == ForgotEmail).FirstOrDefault().AccountID; try { //remove other user reset data if exists functions.DeleteTableData("PasswordForgot", "AccountID", AccountID, _systemConfiguration.connectionString); //add reset data string ResetID = functions.RandomString(120); functions.AddForgotPassword(ResetID, AccountID); //send user email //set email data string ToName = functions.GetAccountData(AccountID, "FullName"); string[] MessageParagraphs = { "Hello, ", "We've received a request to reset the password for your account. No changes have been made to your account yet. You can reset your password by clicking the link below: ", "If you did not request a new password, please let us know immediately by replying to this email." }; string PreHeader = "Account password reset link notification."; bool Button = true; int ButtonPosition = 2; string ButtonLink = functions.GetSiteLookupData("AppDomain") + "/PasswordReset/?id=" + ResetID; string ButtonLinkText = "Reset Password"; string Closure = _systemConfiguration.emailClosure; string Company = _systemConfiguration.emailCompany; string UnsubscribeLink = _systemConfiguration.emailUnsubscribeLink; string MessageBody = EmailFormating.FormatEmail(MessageParagraphs, PreHeader, Button, ButtonPosition, ButtonLink, ButtonLinkText, Closure, Company, UnsubscribeLink); string FromEmail = _systemConfiguration.smtpEmail; string ToEmail = ForgotEmail; string Subject = "Password Reset Email"; //Get smtp details string smtpEmail = _systemConfiguration.smtpEmail; string smtpPass = _systemConfiguration.smtpPass; string displayName = _systemConfiguration.emailDisplayName; string smtpHost = _systemConfiguration.smtpHost; int smtpPort = _systemConfiguration.smtpPort; EmailService.SendEmail(FromEmail, ToEmail, Subject, MessageBody, smtpEmail, smtpPass, displayName, smtpHost, smtpPort); TempData["SuccessMessage"] = @"The email with further instructions was sent to the submitted email address. If you don’t receive a message in 5 minutes, " + "check the junk folder. If you are still experiencing any problems, contact support at " + functions.GetSiteLookupData("SupportEmail"); //log activity if (_systemConfiguration.logActivity) { string LogAction = $@"User '{ToName}' did password reset."; functions.LogActivity(ToEmail, ToEmail, "PasswordReset", LogAction); } return(RedirectToAction("Index", "SignIn")); } catch (Exception ex) { //Log Error _logger.LogInformation("Password Reset Error: " + ex.ToString()); TempData["ErrorMessage"] = "There was an error processing your request. Please try again. If this error persists, please send an email to the administrator."; return(RedirectToAction("Index", "SignIn")); } }
public IActionResult Index(string id) { if (string.IsNullOrEmpty(id) || id == "Index") { return(RedirectToAction("Index", "Home")); } try { var postModel = _context.vwPostsApproved .FirstOrDefault(m => m.PostPermalink == id); if (postModel == null) { //check if PostPermalink contained in another PostPermalink if (_context.vwPostsApproved.Any(s => s.PostPermalink.Contains(id))) { string PostPermalink = _context.vwPostsApproved.Where(s => s.PostPermalink.Contains(id)).OrderByDescending(s => s.ApprovalsDateAdded).FirstOrDefault().PostPermalink; return(RedirectToAction("Index", "Posts", new { id = PostPermalink })); } //check if PostPermalink trimmed contained in another PostPermalink id = id.Substring(0, id.Length - 10); //remove last 10 characters if (_context.vwPostsApproved.Any(s => s.PostPermalink.Contains(id))) { string PostPermalink = _context.vwPostsApproved.Where(s => s.PostPermalink.Contains(id)).OrderByDescending(s => s.ApprovalsDateAdded).FirstOrDefault().PostPermalink; return(RedirectToAction("Index", "Posts", new { id = PostPermalink })); } return(NotFound()); } if (Convert.ToBoolean(functions.GetSiteLookupData("EnableFaceBookComments"))) { ViewData["FacebookCommentId"] = functions.GetSiteLookupData("FacebookCommentAppId"); } ViewBag.FaceBookComments = Convert.ToBoolean(functions.GetSiteLookupData("EnableFaceBookComments")); string PostID = _context.vwPostsApproved.Where(s => s.PostPermalink == id).FirstOrDefault().PostID; ViewBag.PostID = PostID; string PostTitle = _context.vwPostsApproved.Where(s => s.PostPermalink == id).FirstOrDefault().PostTitle; string PostAuthor = _context.vwPostsApproved.Where(s => s.PostPermalink == id).FirstOrDefault().PostAuthor; string PostType = _context.vwPostsApproved.Where(s => s.PostPermalink == id).FirstOrDefault().PostType; string VisitorIP = functions.FormatVisitorIP(_sessionManager.SessionIP, _accessor.HttpContext?.Connection?.RemoteIpAddress?.ToString()); string OtherInfo = null; //add any other info here //log post view functions.LogPostView(PostID, PostAuthor, PostType, VisitorIP, _detectionService.Browser.Name.ToString(), _detectionService.Device.Type.ToString(), OtherInfo); //log visit functions.VisitLog(_systemConfiguration.visitLogTypes.Split(",")[1], PostTitle, VisitorIP, _detectionService.Browser.Name.ToString(), _detectionService.Device.Type.ToString(), null, OtherInfo); //get ShareThis url ViewBag.ShareThisUrl = functions.GetSiteLookupData("ShareThisUrl"); ViewBag.ConnectionString = _systemConfiguration.connectionString; ViewData["Title"] = PostTitle; ViewData["ContentKeywords"] = postModel.MetaKeywords; ViewData["ContentDescription"] = PostTitle; ViewData["PostAuthor"] = PostAuthor; //Set properties ViewData["PropertyDescription"] = "By " + functions.GetAccountData(PostAuthor, "FullName") + ", " + functions.FormatLongText(PostTitle, 120); ViewData["PropertySection"] = _context.Categories.Where(s => s.CategoryID == postModel.PostCategory).FirstOrDefault().CategoryName; ViewData["PropertyUpdatedTime"] = postModel.UpdateDate; return(View(postModel)); } catch (Exception ex) { //Log Error _logger.LogInformation("Get Post Details Error: " + ex.ToString()); TempData["ErrorMessage"] = "There was an error processing your request. Please try again. If this error persists, please send an email."; } return(RedirectToAction("Index", "Home")); }
public async Task <IActionResult> Index(AccountsModel accountsModel) { // Set Meta Data ViewData["Title"] = "Sign Up"; ViewData["ContentKeywords"] = functions.GetSiteLookupData("MetaKeywords"); ViewData["ContentDescription"] = functions.GetSiteLookupData("MetaDescription"); ViewData["PostAuthor"] = ""; if (ModelState.IsValid) { //verify password match string ConfirmPassword = Request.Form["ConfirmPassword"]; if (!functions.PasswordsMatch(accountsModel.Password, ConfirmPassword)) { TempData["ErrorMessage"] = "Passwords do not match"; return(View(accountsModel)); } //verify email does not exist if (_context.Accounts.Any(s => s.Email == accountsModel.Email)) { TempData["ErrorMessage"] = "Email already exists, please choose a different email"; return(View(accountsModel)); } try { //set registration default values accountsModel.AccountID = functions.GetGuid(); accountsModel.DirectoryName = functions.GenerateDirectoryName(accountsModel.Email); accountsModel.Active = 0; accountsModel.Oauth = 0; accountsModel.EmailVerification = 0; accountsModel.UpdatedBy = accountsModel.AccountID; accountsModel.UpdateDate = DateTime.Now; accountsModel.DateAdded = DateTime.Now; //hashing password with BCrypt accountsModel.Password = BCrypt.Net.BCrypt.HashPassword(accountsModel.Password); _context.Add(accountsModel); await _context.SaveChangesAsync(); //add account id to account details if (!_context.AccountDetails.Any(s => s.AccountID == accountsModel.AccountID)) { functions.AddTableData("AccountDetails", "AccountID", accountsModel.AccountID, _systemConfiguration.connectionString); } //send user email //set email data string ToName = functions.GetAccountData(accountsModel.AccountID, "FullName"); string[] MessageParagraphs = { "Hello " + ToName + ", ", "Thank you for registering to " + functions.GetSiteLookupData("SiteName") + ".", "Your registration would be reviewed by our team and you would be notified once approved.", "This may take up to 24 hours." }; string PreHeader = "New account registration notification."; bool Button = false; int ButtonPosition = 2; string ButtonLink = null; string ButtonLinkText = null; string Closure = _systemConfiguration.emailClosure; string Company = _systemConfiguration.emailCompany; string UnsubscribeLink = _systemConfiguration.emailUnsubscribeLink; string MessageBody = EmailFormating.FormatEmail(MessageParagraphs, PreHeader, Button, ButtonPosition, ButtonLink, ButtonLinkText, Closure, Company, UnsubscribeLink); string FromEmail = _systemConfiguration.smtpEmail; string ToEmail = accountsModel.Email; string Subject = "Account Registration Email"; //Get smtp details string smtpEmail = _systemConfiguration.smtpEmail; string smtpPass = _systemConfiguration.smtpPass; string displayName = _systemConfiguration.emailDisplayName; string smtpHost = _systemConfiguration.smtpHost; int smtpPort = _systemConfiguration.smtpPort; EmailService.SendEmail(FromEmail, ToEmail, Subject, MessageBody, smtpEmail, smtpPass, displayName, smtpHost, smtpPort); //log activity if (_systemConfiguration.logActivity) { string LogAction = $@"User '{ToName}' registered."; functions.LogActivity(accountsModel.AccountID, accountsModel.AccountID, "NewRegistration", LogAction); } TempData["SuccessMessage"] = "Thank you for registering. Your registration would be reviewed by our team and you would be notified once approved. This may take up to 24 hours."; return(RedirectToAction("Index", "SignIn")); } catch (Exception ex) { //Log Error _logger.LogInformation("Sign Up Error: " + ex.ToString()); 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")); }