public ActionResult Index() { var model = new OrderViewModel { Orders = svc.GetOrders(User.Identity.GetUserId()) }; //make sure the back button on the edit page reloads the index page. Response.Cache.SetNoStore(); return(View(model)); }
public ActionResult Create(OrderViewModel model) { //if user's zone is not able to order, return with error if (!ZoneSync.CheckUserZoneForISPOrdering(model.Order.Client)) { TempData["IsAbleToOrderForUser"] = false; return(RedirectToAction("Create")); } var orderUrl = new UrlHelper(HttpContext.Request.RequestContext).Action("Edit", "Order", new { area = "ISPAdmin" }, Request.Url.Scheme); var savedOrder = svc.SaveOrder(model, "ISPUser", orderUrl, User.Identity.GetUserId()); return(RedirectToAction("Details", new { id = savedOrder.OrderId })); }
public ActionResult EditClient(OrderViewModel model) { svc.EditClient(model.Order.Client); TempData["ClientUpdated"] = true; return(RedirectToAction("Edit", new { id = model.Order.OrderId })); }
public Order CreateOrder(OrderViewModel model, string role, string orderUrl, string userId) { var userPassword = ""; //get existing user if exists var user = db.Users.Include(u => u.Location).Include(u => u.Estate).Include(u => u.Zone).FirstOrDefault(u => u.Email == model.Order.Client.Email); if (string.IsNullOrEmpty(model.Order.Client.Id) && user == null) { var newUser = model.Order.Client; var userRepo = new UserRepository(); var result = userRepo.CreateUser(new User { UserName = newUser.Email, FirstName = newUser.FirstName, LastName = newUser.LastName, Email = newUser.Email, EmailConfirmed = true, UserCreatedWithOrder = true, PhoneNumber = newUser.PhoneNumber, Landline = newUser.Landline, CreatedDate = DateTime.Now, Address = newUser.Address, LocationId = model.Order.LocationId, EstateId = model.Order.Client.EstateId, Latitude = model.Order.Client.Latitude, Longitude = model.Order.Client.Longitude, IsOwner = model.Order.Client.IsOwner, OwnerName = model.Order.Client.OwnerName, OwnerPhoneNumber = model.Order.Client.OwnerPhoneNumber, OwnerEmail = model.Order.Client.OwnerEmail, HasAltContact = newUser.HasAltContact, AltFirstName = newUser.AltFirstName, AltLastName = newUser.AltLastName, AltEmail = newUser.AltEmail, AltCellNo = newUser.AltEmail, AltLandline = newUser.AltLandline }, UserType.Client); user = db.Users.Include(u => u.Location).Include(u => u.Estate).Include(u => u.Zone).First(u => u.Id == result.User.Id); userPassword = result.UserPassword; } var product = db.ISPProducts.Include(i => i.ISP).First(i => i.ISPProductId == model.Order.ISPProductId); var precinctCode = ""; var special = GetSpecial(user.Zone, product.IsSpecial); if (user.Estate != null && !string.IsNullOrEmpty(user.Estate.EstateCode)) { precinctCode = user.Estate.EstateCode; } else if (!string.IsNullOrEmpty(user.Location.PrecinctCode)) { precinctCode = user.Location.PrecinctCode; } var currentDateTime = DateTime.Now; var order = new Order { ISPId = product.ISPId, ClientId = user.Id, Status = OrderStatus.Ordered, ISPOrderNo = model.Order.ISPOrderNo ?? "Please provide", FFOrderNo = "placeholder", CreatedDate = currentDateTime, CreatedByRole = role, ISPProduct = product, ISPProductId = product.ISPProductId, IsSpecial = special != null, Special = special, ClientContractTerm = model.Order.ClientContractTerm, OrderFFProducts = new List <OrderFFProduct> { new OrderFFProduct { Quantity = 1, FFProductId = db.FFProducts.FirstOrDefault(p => p.LineSpeed == product.LineSpeed).FFProductId } }, StatusList = new List <Status> { new Status { OrderStatus = OrderStatus.New, TimeStamp = currentDateTime }, new Status { OrderStatus = OrderStatus.Pending, TimeStamp = currentDateTime }, new Status { OrderStatus = OrderStatus.Ordered, TimeStamp = currentDateTime } } }; //quantity items for (int i = 0; i < model.QuantityId.Count; i++) { if (model.QuantityQty[i] > 0) { order.OrderFFProducts.Add(new OrderFFProduct() { FFProductId = model.QuantityId[i], Quantity = model.QuantityQty[i] }); } } //checkbox items: if checked, save with qty=1 int j = 0; for (int i = 0; i < model.OptionId.Count; i++) { if (model.Option[j]) { order.OrderFFProducts.Add(new OrderFFProduct() { FFProductId = model.OptionId[i], Quantity = 1 }); j++; } j++; } db.Orders.Add(order); order.Logs.Add(new Log { UserId = userId, Type = UserAction.Create, OrderStatus = order.Status, TimeStamp = DateTime.Now }); SaveChanges(db); //once you have the orderId then use that as the unique order number order.FFOrderNo = string.Format("FTTH-{0}-{1}-{2:D6}", product.ISP.ISPCode, precinctCode, order.OrderId); SaveChanges(db); EmailSender.SendISPNewOrderNotification(order, product.ISP, user, orderUrl); EmailSender.SendRTNewOrderNotification(order.OrderId); //var cap = product.IsCapped ? product.Cap.ToString() : ""; //var isCapped = product.IsCapped ? "Capped" : "Uncapped"; //var email = new EmailDto //{ // Subject = "Order Confirmation", // Body = "Dear " + user.FirstName + "," + // "<br/><br/>This is a courtesy email to inform you that " + product.ISP.Name + // " has placed an order for a Frogfoot Fibre link to your premises in order to supply you with a fibre broadband service." + // "<br/><br/>If you did not request this service then please contact the ISP using the details below." + // "<br/><br/>A user account has been created for you on the Frogfoot Fibre portal. " + // "<br/>Should you wish to confirm your details and check for updates, please make use of the following login credentials." + // "<br/><br/>URL: http://www.frogfootfibre.com" + // "<br/><br/>Username: "******"<br/><br/>Password: "******"<br/><br/><br/><br/>If you have any queries about the broadband fibre offering, you are welcome to contact <strong>" + product.ISP.Name + // "</strong> via email at " + product.ISP.EmailAddress + " or by phone on " + product.ISP.LandlineNo + "." + // "<br/><br/>Warm regards" + // "<br/><br/>The Frogfoot team." + // "<br/><br/>[email protected]" //}; //EmailSender.SendEmail(email, user); return(order); }