public ActionResult GuestOrder([Bind(Include = "FirstName,Email,Phone,City,Adress,ConfirmPrivace,Delivery,PayMethod,BonusPoints,UseBonusPoints,DeliveryCost", Exclude = "LastName")] OrderModel model) { if (!model.ConfirmPrivace) { ModelState.AddModelError("ConfirmPrivace", "Для регистрации необходимо принять соглашение"); } else { if (model.Delivery == 0) { ModelState.AddModelError("Delivery", "Необходимо выбрать один из перечисленных вариантов"); } else { if (model.PayMethod == 0) { ModelState.AddModelError("PayMethod", "Необходимо выбрать один из перечисленных вариантов"); } else { if (ModelState.IsValid) { var cart = db.CartRepository.GetById(int.Parse(UserContext.Current.CartID)); if (cart != null) { try { var scgStatus = db.ShareCodesGroupRepository.GetAll().FirstOrDefault(i => i.Code.Equals("ORDER_STATUS")); var newStatus = scgStatus != null ? scgStatus.t_Share_Code.FirstOrDefault(f => f.Code == "ORDER_NEW").ID: 0; var sumPrice = cart.t_Ref_Cart_Product.Sum(i => i.t_Product.Price); var insModel = new t_Order() { Name = model.FirstName, Email = model.Email, Phone = model.Phone, DeliveryMethodID = model.Delivery, City = model.City, Adress = model.Adress, Date = DateTime.Now, PayMethodID = model.PayMethod, SumPrice = sumPrice , UserID = UserContext.Current.ID, BonusPoints = 0, WholePrice = sumPrice, StatusID = newStatus, DeliveryCost = model.DeliveryCost }; if (model.UseBonusPoints && UserContext.Current.IsAuthenticated) { var user = db.UserRepository.GetById(UserContext.Current.ID); var usersBonus = user.BonusPoints; var bonus = model.BonusPoints < 0 ? 0 : model.BonusPoints; insModel.BonusPoints = bonus > usersBonus ? usersBonus : bonus; insModel.WholePrice = sumPrice - insModel.BonusPoints; user.BonusPoints = usersBonus - insModel.BonusPoints; db.UserRepository.Update(user); } var insVal = db.OrderRepository.InsertReturn(insModel); db.Save(); ICollection<t_Ref_Order_Product> collProd = new List<t_Ref_Order_Product>(); foreach (var p in cart.t_Ref_Cart_Product) { collProd.Add(new t_Ref_Order_Product() { OrderID = insVal.ID, ProductID = p.ProductID }); } insVal.t_Ref_Order_Product = collProd; db.OrderRepository.Update(insVal); db.RefCartProductRepository.DeleteRange(cart.t_Ref_Cart_Product); foreach (var p in insVal.t_Ref_Order_Product) { if (p.t_Product.Count > 0) p.t_Product.Count--; } db.Save(); //Send message for Managers about new order var managerEmails = getManagerEmailsAsList(); if (managerEmails.Any()) { var messageText = string.Format("<div>Вам поступил новый заказ #{0}</div>",insVal.ID); var email = new EmailController().ClientDelivery(managerEmails.ToList(), messageText); Task.Factory.StartNew(() => email.Deliver()); } MainInfoUser.Instance.Dispose(); return RedirectToAction("OrderDone", new {id = insVal.ID, clientName = insVal.Name}); } catch (Exception ex) { Logger.Instance.Error( "Произошла ошибка при формировании заказа, корзины {0} ошибка:{1}", UserContext.Current.CartID, ex); } } } } } } IEnumerable<t_Share_Code> scg = null; t_Share_Codes_Group companyInfo = null; t_Share_Codes_Group payInfo = null; ViewBag.EmailDisabled = false; scg = db.ShareCodesGroupRepository.GetAll().FirstOrDefault(i => i.Code.Equals("DELIVERY_TYPE")).t_Share_Code; companyInfo = db.ShareCodesGroupRepository.GetAll().FirstOrDefault(i => i.Code.Equals("COMPANY_INFO")); payInfo = db.ShareCodesGroupRepository.GetAll().FirstOrDefault(i => i.Code.Equals("PAY_METHOD")); model.DeliveryPickUp = scg.FirstOrDefault(i => i.Code.Equals("DELIVERY_PICKUP")); model.DeliveryCompany = scg.FirstOrDefault(i => i.Code.Equals("DELIVERY_COMPANY")); //show address form ViewBag.VisibleDeliveryAdress = false; if (model.Delivery == model.DeliveryCompany.ID && !string.IsNullOrWhiteSpace(model.Adress) && model.Adress != "-") { ViewBag.VisibleDeliveryAdress = true; } if (companyInfo != null) { model.CompanyAdress = companyInfo.t_Share_Code.FirstOrDefault(i => i.Code.Equals("ADRESS")).Value; model.CompanyMode = companyInfo.t_Share_Code.FirstOrDefault(i => i.Code.Equals("WORK_MODE")).Value; } model.PayCash = payInfo.t_Share_Code.FirstOrDefault(i => i.Code.Equals("PAY_CASH")); model.PayCard = payInfo.t_Share_Code.FirstOrDefault(i => i.Code.Equals("PAY_CARD")); model.PayOnline = payInfo.t_Share_Code.FirstOrDefault(i => i.Code.Equals("PAY_ONLINE")); var uc = UserContext.Current; if (uc.IsAuthenticated) { model.FirstName = uc.FirstName; model.Email = uc.Email; model.Phone = uc.Phone; ViewBag.EmailDisabled = true; ViewBag.BonusPoints = db.UserRepository.GetById(uc.ID).BonusPoints; } ViewBag.SumItem = MainInfoUser.Instance.CartItemsSum; ViewBag.IsAuth = uc.IsAuthenticated; return View(model); }
public void getPriceFromManager(int productId, string email) { var product = db.ProductsRepository.GetById(productId); if (product == null) { throw new Exception("Указанный товар не найден."); } StringBuilder strBuilder = new StringBuilder(); strBuilder.AppendLine("<div>Запрос цены на товар.</div></br>"); strBuilder.AppendLine(string.Format("<div>Категория товара: {0}</div></br>", product.t_Category.Name)); strBuilder.AppendLine(string.Format("<div>Наименование товара: {0}</div></br>", product.ProductName)); strBuilder.AppendLine(string.Format("<div>Ссылка на товар в магазине: {0}</div></br>", Url.Action("Product", "Store", new { id = product.ID }, Request.Url.Scheme))); strBuilder.AppendLine(string.Format("<div>Email клиента для обратной связи: {0}</div></br>", email)); var managerEmails = getManagerEmailsAsList(); if (managerEmails.Any()) { var emailSend = new EmailController().ClientDelivery(managerEmails.ToList(), strBuilder.ToString()); Task.Factory.StartNew(() => emailSend.Deliver()); } }
public ActionResult Registration(RegistrationModel model, bool captchaValid) { if (ModelState.IsValid) { if (UserContext.Current.UserExists(model.Email)) { ModelState.AddModelError("Email", "Пользователь с таким Email уже зарегестрирован"); return View(model); } if (!model.ConfirmPrivace) { ModelState.AddModelError("ConfirmPrivace", "Для регистрации необходимо принять соглашение"); return View(model); } if (!model.Password.Equals(model.ConfirmPassword)) { ModelState.AddModelError("ConfirmPassword", "Подтверждение не совпадает с введенным паролем"); return View(model); } try { UserContext.Current.Registration(model.Email, model.Password, new { FirstName = model.FirstName, LastName = model.LastName, Phone = model.Phone, Fax = model.Fax, Organization = model.Organization, Adress = model.Adress, City = model.City, Delivery = model.Delivery }); } catch (Exception) { return RedirectToErrorPage("Во время регистрации произошла ошибка."); } if (UserContext.Current.Logon(model.Email, model.Password)) { var email = new EmailController().RegisterUserSuccess(model.Email); Task.Factory.StartNew(() => email.Deliver()); return RedirectToAction("Index", "Store"); } return RedirectToAction("Login"); } return View(model); }
public ActionResult ResetPasswordSendOnEmail(ResetPasswordModel model) { ViewBag.Success = false; if (ModelState.IsValid) { if (UserContext.Current.UserExists(model.Email)) { var token = UserContext.Current.GeneratePasswordResetToken(model.Email); ViewBag.Success = true; var email = new EmailController().RecoveryPassword(token, model.Email); Task.Factory.StartNew(() => email.Deliver()); } else { ModelState.AddModelError("Email", "Пользователь с таким E-mail не найден, введите корректный E-mail!"); } } return PartialView(model); }
private void SendEmailToManager(int listId) { var roleManager = db.RolesRepository.GetAll().FirstOrDefault(f => f.RoleName == "TGZ_MANAGER_STORE"); if (roleManager != null) { var managers = db.UserRepository.GetAll().Where(w => w.webpages_Roles.Contains(roleManager)); var managerEmails = managers.Select(s => s.Email).ToList(); var messageText = string.Format("<div>Вам поступил новый опросный лист #{0}</div>", listId); var email = new EmailController().ClientDelivery(managerEmails, messageText); Task.Factory.StartNew(() => email.Deliver()); } }
public ActionResult StepSixteenSelectNodesEdit(t_ListOfQuestions model, bool isBack = false) { if (isBack) { InitDropDownsListForAllTypesPage(); return PartialView("StepFithteenSelectNodesPartial", UserContext.ListOfQuestion); } if (string.IsNullOrEmpty(model.ClientName) || string.IsNullOrEmpty(model.ClientEmail) || string.IsNullOrEmpty(model.ClientPhone)) { ModelState.AddModelError("Summary", "Не все поля заполнены"); return PartialView("StepSixteenSelectNodesPartial", UserContext.ListOfQuestion); } var listQuestion = UserContext.ListOfQuestion; SetPropertyListQuestion(l => { l.ClientName = model.ClientName; l.ClientEmail = model.ClientEmail; l.ClientOrganization = model.ClientOrganization; l.ClientPhone = model.ClientPhone; }); listQuestion.CreateDate = DateTime.Now; try { db.ListOfQuestionsRepository.Insert(listQuestion); db.Save(); var email = new EmailController(); SendEmailToManager(listQuestion.Id); } catch (Exception ex) { Logger.Instance.Error(string.Format("Error save ListQuestion ", ex.Message)); throw ex; } return PartialView("StepFinishPartial", UserContext.ListOfQuestion); }