public async Task <IActionResult> Create(CategoryViewModel model) { if (ModelState.IsValid) { var vm = new Category { Id = NumberUtilities.GetUniqueNumber(), Name = model.Category.Name, ParentId = model.Category.ParentId }; await _context.Categories.AddAsync(vm); if (model.Category.ParentId != null) { var cat = await _context.Categories.AsNoTracking().FirstOrDefaultAsync(x => x.Id == model.Category.ParentId); cat.IsParent = true; } await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View()); }
public async Task <IActionResult> Create([Bind("Id,Division,Name")] District district) { if (ModelState.IsValid) { district.Id = NumberUtilities.GetUniqueNumber(); _context.Add(district); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(district)); }
public IActionResult AgentRequest(Agent agent) { if (!ModelState.IsValid) { return(View(agent)); } agent.Id = NumberUtilities.GetUniqueNumber(); _context.Agents.Add(agent); _context.SaveChanges(); return(RedirectToAction("Index", "Agents")); }
public async Task <IActionResult> AddProduct(IFormFile file, ProductViewModel vm) { if (ModelState.IsValid) { var Seller = _context.Sellers.Where(s => s.Email.Contains(User.Identity.Name)); if (Seller.SingleOrDefault() == null) { return(RedirectToAction("RequestForSell", "Products")); } ImgUploader img = new ImgUploader(environment); var imgPath = img.ImageUrl(file); //function working here var products = new Product { Id = NumberUtilities.GetUniqueNumber(), Title = vm.Product.Title, Description = vm.Product.Description, Price = vm.Product.Price, SellerId = 1, //manually value. Next time it will be from Session User Value CategoryId = vm.Product.CategoryId, DistrictId = vm.Product.DistrictId, IsPublished = vm.Product.IsPublished, //manually valuess Unit = vm.Product.Unit, ItemInStock = vm.Product.ItemInStock, UpdatedAt = DateTime.Now, //manually valuess OfferExpireDate = DateTime.Now, //manually valuess ImagePath = imgPath, OfferPrice = vm.Product.OfferPrice, }; await _context.AddAsync(products); await _context.SaveChangesAsync(); long id = products.Id; } else { var viewmodel = _productService.GetProductViewModelAsync(); ViewBag.error = "You Cannot ignore required fields"; return(View("AddProduct", viewmodel)); } return(RedirectToAction("AddProduct", "Products")); }
public async Task <IActionResult> Create([Bind("Id,Title,SellerId,Price,Description,Unit,IsPublished,ItemInStock,DistrictId,CategoryId,ImagePath,OfferPrice,OfferExpireDate,CreatedAt,UpdatedAt")] Product product) { if (ModelState.IsValid) { product.Id = NumberUtilities.GetUniqueNumber(); _context.Add(product); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["CategoryId"] = new SelectList(_context.Categories, "Id", "Domain", product.CategoryId); ViewData["DistrictId"] = new SelectList(_context.Districts, "Id", "Division", product.DistrictId); ViewData["SellerId"] = new SelectList(_context.Sellers, "Id", "Email", product.SellerId); return(View(product)); }
public Document Upload(IFormFile file) { if (file == null || file.Length == 0) { return(null); } //DRILL ORIGINAL NAME var originalName = GetDocumentName(file); //DRILL EXTENSION var extension = Path.GetExtension(file.FileName).ToLower(); //GENERATE UNIQUE NAME var currentName = _encryptionService.GetUniqueKey(20); //ROOT PATH string rootPath = _env.ContentRootPath; //APPLICATION LOCAL DIRECTORY PATH string localDirectory = $"/StaticFiles/Images/"; //FILE PATH string imagePath = $"{rootPath}{localDirectory}{currentName}{extension}"; //SAVE STREAM using (var stream = new FileStream(imagePath, FileMode.Create)) { file.CopyTo(stream); stream.Dispose(); } return(new Document { Id = NumberUtilities.GetUniqueNumber(), OriginalName = originalName, Name = currentName, CreatedAt = DateTime.UtcNow, Extension = extension, Path = Path.Combine(localDirectory, (currentName + extension)), Type = FileUtilities.GetType(extension) }); }
public async Task <IActionResult> ApproveSeller(string email) { var requestedSeller = _context.SellerRequests .Where(s => s.Email.Contains(email)) .FirstOrDefault(); if (requestedSeller == null) { return(NotFound()); } var sellers = _context.Sellers.Include(x => x.User).ThenInclude(x => x.District); if (!sellers.Any(x => x.Email == email)) { var seller = new Seller { Id = NumberUtilities.GetUniqueNumber(), Name = requestedSeller.SellerName, Email = email, CompanyName = requestedSeller.CompanyName, Phone = requestedSeller.Phone, DateOfBirth = requestedSeller.DateOfBirth }; await _context.Sellers.AddAsync(seller); var appUserr = _context.Users.Where(x => x.Email == email).FirstOrDefault(); if (appUserr != null) { seller.UserId = appUserr.Id; } await _context.SaveChangesAsync(); } //REMOVE PREVIOUS SELLER REQUEST var del = _context.SellerRequests.Find(requestedSeller.Id); _context.SellerRequests.Remove(del); await _context.SaveChangesAsync(); return(RedirectToAction("RequestIndex")); } //REQUEST SECTION END
public async Task <ActionResult> Checkout(OrderViewModel ovModel) { if (SessionHelper.GetObjectFromJson <List <CartItem> >(HttpContext.Session, "cart") == null) { return(RedirectToAction("Index", "Products")); } Customer customer = new Customer(); var customerExisted = _context.Customers.Where(c => c.Email == ovModel.Order.Email).AsNoTracking().FirstOrDefault(); if (customerExisted == null) { //nw user var user = new AppUser { Email = ovModel.Order.Email, UserName = ovModel.Order.Email }; var res = await _userManager.CreateAsync(user); if (res.Succeeded) { var cust = new Customer { Id = NumberUtilities.GetUniqueNumber(), Name = ovModel.Order.Name, Email = ovModel.Order.Email, Phone = ovModel.Customer.Phone, UserId = user.Id }; await _context.Customers.AddAsync(cust); await _context.SaveChangesAsync(); customer = cust; } } else { customer = _context.Customers.Find(ovModel.Customer.Id); } var order = new Order { Id = NumberUtilities.GetUniqueNumber(), Name = customer.Name, Email = customer.Email, //fixed portion ShippingAddress = ovModel.Order.ShippingAddress, PostalCode = ovModel.Order.PostalCode, StreetNo = ovModel.Order.StreetNo, CustomerId = customer.Id, TotalPrice = ovModel.TotalPrice, OrderDate = DateTime.Now, AccountNo = ovModel.Order.AccountNo, TransactionId = ovModel.Order.TransactionId }; _context.Orders.Add(order); _context.SaveChanges(); var cartList = SessionHelper.GetObjectFromJson <List <CartItem> >(HttpContext.Session, "cart"); ViewBag.total = cartList.Sum(c => c.Product.Price * c.Quantity); foreach (var item in cartList) { var order_product = new ProductOrder { Id = NumberUtilities.GetUniqueNumber(), OrderId = order.Id, ProductId = item.Product.Id, NumberOfProduct = item.Quantity }; _context.ProductOrders.Add(order_product); _context.SaveChanges(); var quantity = _context.Products.Where(c => c.Id == item.Product.Id).SingleOrDefault(); if (quantity != null) { var pro = _context.Products.Find(item.Product.Id); pro.ItemInStock = pro.ItemInStock - order_product.NumberOfProduct; _context.Products.Update(pro); _context.SaveChanges(); } } //clear the session now HttpContext.Session.Clear(); var agents = _context.Agents.Where(c => c.User.DistrictId == customer.User.DistrictId).ToList(); var random = new Random(); var index = random.Next(0, agents.Count); var agent = agents[index]; var agentorder = new AgentOrder { Id = NumberUtilities.GetUniqueNumber(), AgentId = agent.Id, OrderId = order.Id, IsPaid = false, IsOnRoute = false, IsFullyCompleted = false }; _context.AgentOrders.Add(agentorder); _context.SaveChanges(); TempData["orderSuccess"] = "Your order has been placed successfully!"; return(RedirectToAction("Checkout")); }
public async Task <ActionResult> CreateProduct(long id, IFormFile file, SellerViewModel request) { if (id == 0) { return(NotFound()); } var sellerChk = await _context.Sellers.FindAsync(id); if (User.Identity.Name != sellerChk.Email) { return(NotFound()); } var data = await _context.Sellers.Where(c => c.Email == User.Identity.Name).FirstOrDefaultAsync(); if (data == null) { NotFound(); } if (request.CreateProductViewModel.Title == null) { ModelState.AddModelError("CreateProductViewModel.Title", "Please enter product name"); } if (request.CreateProductViewModel.Price == 0) { ModelState.AddModelError("CreateProductViewModel.Price", "Please enter price"); } if (request.CreateProductViewModel.ItemInStock == 0) { ModelState.AddModelError("CreateProductViewModel.ItemInStock", "Please enter itemInStock"); } if (request.CreateProductViewModel.Unit == null) { ModelState.AddModelError("CreateProductViewModel.Unit", "Please enter unit"); } if (request.CreateProductViewModel.CategoryId == 0 || request.CreateProductViewModel.CategoryId == null) { ModelState.AddModelError("CreateProductViewModel.CategoryId", "Please enter category"); } //MODEL WILL BE INVALID IF if (request.CreateProductViewModel.Title == null || request.CreateProductViewModel.Price == 0 || request.CreateProductViewModel.ItemInStock == 0 || request.CreateProductViewModel.Unit == null || request.CreateProductViewModel.CategoryId == 0 || request.CreateProductViewModel.CategoryId == null) { var vmfinal = new SellerViewModel { Products = _context.Products.Where(c => c.SellerId == id).AsNoTracking().ToList(), Districts = _context.Districts.AsNoTracking().ToList(), Categories = _context.Categories.AsNoTracking().ToList(), Sellers = _context.Sellers.AsNoTracking().ToList(), Seller = _context.Sellers.Where(x => x.Id == id).AsNoTracking().FirstOrDefault(), Product = request.Product, CreateProductViewModel = request.CreateProductViewModel }; return(View(vmfinal)); } var seller = await _context.Sellers.Where(s => s.Email.Contains(User.Identity.Name)).Include(x => x.User).FirstOrDefaultAsync(); if (seller == null) { return(RedirectToAction("request", "Products", new { id = id })); } ////IMAGE UPLOAD //ImgUploader img = new ImgUploader(_environment); //var imgPath = img.ImageUrl(file); //if (imgPath == null) //{ // TempData["uploaderr"] = "May be Image is not perfect!"; // return RedirectToAction("CreateProduct", "Sellers", new { id = seller.Id }); //} var uploadCommand = new CreateDocumentCommand() { File = file }; var uploadedPhoto = await _mediator.Send(uploadCommand); //CREATE PRODUCT MODEL var products = new Product { Id = NumberUtilities.GetUniqueNumber(), Title = request.CreateProductViewModel.Title, Description = request.CreateProductViewModel.Description, Price = request.CreateProductViewModel.Price ?? 0, SellerId = seller.Id, CategoryId = request.CreateProductViewModel.CategoryId ?? 0, DistrictId = seller.User.DistrictId, IsPublished = true, Unit = request.CreateProductViewModel.Unit, ItemInStock = request.CreateProductViewModel.ItemInStock ?? 0, CreatedAt = DateTime.UtcNow, UpdatedAt = DateTime.UtcNow, OfferExpireDate = DateTime.UtcNow.AddDays(100), //ImagePath = imgPath, PhotoId = uploadedPhoto.Id, OfferPrice = request.CreateProductViewModel.OfferPrice ?? 0 //need to change }; await _context.Products.AddAsync(products); await _context.SaveChangesAsync(); var vms = new SellerViewModel { Products = await _context.Products.Where(c => c.SellerId == id).ToListAsync(), Districts = await _context.Districts.ToListAsync(), Categories = await _context.Categories.ToListAsync(), Sellers = await _context.Sellers.ToListAsync(), Error = "Your Product has been added" }; return(RedirectToAction(nameof(SellerProducts), id)); }