public IActionResult LuuPhieuNhapKho() { double TongTien = 0; PhieuNhapHang pnh = new PhieuNhapHang { NgayNhap = DateTime.Now, TongTien = TongTien }; db.PhieuNhapHang.Add(pnh); db.SaveChanges(); foreach (var item in ListNhaps) { TongTien += item.DonGiaNhap * item.SoLuongNhap; ChiTietPhieuNhap ct = new ChiTietPhieuNhap { MaPn = pnh.MaPn, MaHh = item.MaHh, KichCo = item.KichCo, SoLuongNhap = item.SoLuongNhap, DonGiaNhap = item.DonGiaNhap }; SanPhamKho spk = db.SanPhamKho.SingleOrDefault(p => p.MaHh == ct.MaHh && p.KichCo == ct.KichCo); spk.SoLuong += ct.SoLuongNhap; db.ChiTietPhieuNhap.Add(ct); db.SaveChanges(); } pnh.TongTien = TongTien; db.SaveChanges(); HttpContext.Session.Remove("ListNhap"); return(View("Index")); }
public IActionResult Xem(int id, string traloi) { HoiDap hd = db.HoiDap.Find(id); hd.TrangThaiTl = true; hd.TraLoi = traloi; db.SaveChanges(); ViewData["reply"] = "Tin nhắn đã được gửi đến khách hàng"; KhachHang kh = db.KhachHang.SingleOrDefault(p => p.MaKh == hd.MaKh); MailMessage mm = new MailMessage("*****@*****.**", kh.Email); mm.Subject = "Thông báo phản hồi"; string content = "<h1>{0}</h1> <br/> <div class='text text-success'><h2>Chào mừng bạn đến với ESHOP.</h2></div> <br> <h5> Cảm ơn bạn đã phản hồi với lời nhắn : <br/> <br/>"; content += "<h3 style='font-weight:bolder;color:red;'>" + hd.CauHoi + "</h3><br/><h3>Phản hồi từ ESHOP : </h3><br /><h3 style='color:blue;'>" + hd.TraLoi + "</h3><br />"; mm.Body = string.Format(content, kh.HoTen); mm.IsBodyHtml = true; SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com"; smtp.Port = 587; smtp.EnableSsl = true; smtp.Credentials = new System.Net.NetworkCredential("*****@*****.**", "eshop147258369"); smtp.Send(mm); return(View(hd)); }
public IActionResult GuiVoucher(string mavc) { Voucher voucher = db.Voucher.SingleOrDefault(p => p.MaVc == mavc); voucher.TrangThai = true; double giamgia = Convert.ToDouble(voucher.GiamGia * 100); List <KhachHang> khachHangs = db.KhachHang.ToList(); foreach (var item in khachHangs) { MailMessage mm = new MailMessage("*****@*****.**", item.Email); string content = ""; content = content + "<h2>Chào mừng bạn đến với ESHOP.</h2>"; content = content + "<h2>Nhân dịp " + voucher.NoiDung + " chúng tôi gửi đến bạn một mã voucher. Giảm giá " + giamgia + "% với đơn hàng trên " + @Convert.ToDouble(voucher.TongTienDk).ToString("#,##0") + "đ</h2><br>"; content = content + "<h1 style='color:blue'>" + voucher.MaVc + "</h1>"; content = content + "<div>Cảm ơn bạn đã ủng hộ ESHOP. Thân</div>"; mm.Body = string.Format(content, item.HoTen); mm.IsBodyHtml = true; SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com"; smtp.Port = 587; smtp.EnableSsl = true; smtp.Credentials = new System.Net.NetworkCredential("*****@*****.**", "eshop147258369"); smtp.Send(mm); } db.SaveChanges(); return(RedirectToAction("Index")); }
public IActionResult ChangeStatus(int id) { var hd = _context.HoaDon.Find(id); if (hd != null) { hd.MaTrangThai = 1; _context.SaveChanges(); KhachHang kh = _context.KhachHang.SingleOrDefault(p => p.MaKh == hd.MaKh); MailMessage mm = new MailMessage("*****@*****.**", kh.Email); mm.Subject = "Thông báo đơn hàng"; string content = "<h1>{0}</h1> <br/> <div class='text text-success'><h2>Chào mừng bạn đến với ESHOP.</h2></div> <br> <h5>Bạn vừa tạo một đơn hàng ở ESHOP. Đơn hàng của bạn đã được gửi tới cửa hàng : <br/> Thông tin đơn hàng : <br/>"; content = content + "<table border='1px' style='font-size:15px;border-collapse: collapse;text-align:center'><tr><th>Tên sản phẩm</th><th>Kích cở</th><th>Số lượng</th><th>Đơn giá</th><th>Thành tiền</th></tr>"; double tongtien = 0; List <ChiTietHd> cthd = _context.ChiTietHd.Where(p => p.MaHd == hd.MaHd).ToList(); foreach (var item in cthd) { HangHoa hangHoa = _context.HangHoa.SingleOrDefault(p => p.MaHh == item.MaHh); var giamgia = item.DonGia - item.DonGia * item.GiamGia; CartItem ct = new CartItem { MaHh = hangHoa.MaHh, TenHh = hangHoa.TenHh, Hinh = hangHoa.Hinh, KichCo = item.KichCo, GiaBan = Convert.ToDouble(giamgia), SoLuong = item.SoLuong }; tongtien += ct.ThanhTien; content = content + "<tr><td>" + hangHoa.TenHh + "</td><td>" + item.KichCo + "</td><td>" + item.SoLuong + "</td><td>" + ct.GiaBan.ToString("#,##0") + "</td><td>" + ct.ThanhTien.ToString("#,##0") + "</td></tr>"; } if (tongtien >= 100000) { kh.LoaiKH = true; } _context.SaveChanges(); content = content + "<tr><td colspan='4'>Tông thanh toán : </td><td>" + tongtien.ToString("#,##0") + "</td></tr></table><br />"; content = content + "<div>Đơn hàng của bạn sẽ được chuyển đến trong vài ngày tới . Cảm ơn bạn đã ủng hộ ESHOP. Thân</div>"; mm.Body = string.Format(content, kh.HoTen); mm.IsBodyHtml = true; SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com"; smtp.Port = 587; smtp.EnableSsl = true; smtp.Credentials = new System.Net.NetworkCredential("*****@*****.**", "eshop147258369"); smtp.Send(mm); } return(RedirectToAction("Index")); }
public IActionResult HuyHoaDon(int mahd) { // xóa các chi tiết hóa đơn liên quan List <ChiTietHd> listCT_Xoa = db.ChiTietHd.Where(p => p.MaHd == mahd).ToList(); foreach (var item in listCT_Xoa) { SanPhamKho spk = db.SanPhamKho.SingleOrDefault(p => p.MaHh == item.MaHh && p.KichCo == item.KichCo); spk.SoLuong += item.SoLuong; db.ChiTietHd.Remove(item); } db.SaveChanges(); // xóa hóa đơn HoaDon hd = db.HoaDon.Find(mahd); db.HoaDon.Remove(hd); db.SaveChanges(); return(RedirectToAction("Index")); }
public IActionResult ChangeStatus(int id) { var kh = _context.KhachHang.Find(id); if (kh != null) { kh.TrangThaiHd = !kh.TrangThaiHd; _context.SaveChanges(); } return(RedirectToAction("Index")); }
public IActionResult ChangeStatus(int id) { var nhanvien = _context.NhanVien.Find(id); if (nhanvien != null) { nhanvien.TrangThaiHd = !nhanvien.TrangThaiHd; _context.SaveChanges(); } return(RedirectToAction("Index")); }
public IActionResult Contact(string cauhoi) { if (HttpContext.Session.Get <KhachHang>("user") != null) { HoiDap hd = new HoiDap { CauHoi = cauhoi, NgayDua = DateTime.Now, MaKh = HttpContext.Session.Get <KhachHang>("user").MaKh }; db.HoiDap.Add(hd); db.SaveChanges(); ViewData["MessContact"] = "Thông tin phản hồi của bạn đã gửi đi thành công."; } else { ViewData["MessContact"] = "Vui lòng đăng nhập để gửi phản hồi"; } return(View()); }
public IActionResult ThemDanhGia(int mahh, string noidung, double rating) { if (HttpContext.Session.Get <KhachHang>("user") != null) { if (ViewBag.ErrorCmt != null) { ViewBag.ErrorCmt = null; } BinhLuanSp cmt = new BinhLuanSp { NoiDung = noidung, NgayBl = DateTime.Now, MaKh = HttpContext.Session.Get <KhachHang>("user").MaKh, MaHh = mahh }; HangHoa hh = db.HangHoa.SingleOrDefault(p => p.MaHh == mahh); KhachHang kh = HttpContext.Session.Get <KhachHang>("user"); db.BinhLuanSp.Add(cmt); db.SaveChanges(); YeuThich yt = new YeuThich { MaHh = hh.MaHh, MaKh = kh.MaKh, NgayChon = DateTime.Now, DiemDanhGia = rating, MaBl = cmt.MaBl }; db.YeuThich.Add(yt); db.SaveChanges(); return(View("ChiTiet", hh)); } else { HangHoa hh = db.HangHoa.SingleOrDefault(p => p.MaHh == mahh); ViewBag.ErrorCmt = "Vui lòng đăng nhập để bình luận"; return(View("ChiTiet", hh)); } }
public IActionResult Create([Bind("MaKh,TaiKhoan,MatKhau,HoTen,GioiTinh,NgaySinh,DiaChi,DienThoai,Email,Hinh")] KhachHang khachHang, IFormFile fHinh) { if (ModelState.IsValid) { KhachHang kh = _context.KhachHang.SingleOrDefault(p => p.Email == khachHang.Email); KhachHang khh = _context.KhachHang.SingleOrDefault(p => p.TaiKhoan == khachHang.TaiKhoan); if (khh != null) { TempData["FailUser"] = "******"; if (kh != null) { TempData["FailEmail"] = "Email này đã được đăng kí!"; } return(View("Create")); } else { if (kh != null) { TempData["FailEmail"] = "Email này đã được đăng kí!"; return(View("Create")); } } if (fHinh != null) { var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "UserAvatar", fHinh.FileName); using (var file = new FileStream(path, FileMode.Create)) { fHinh.CopyTo(file); } khachHang.Hinh = fHinh.FileName; } khachHang.MatKhau = Encryptor.MD5Hash(khachHang.MatKhau); khachHang.TrangThaiHd = false; khachHang.LoaiKH = false; _context.Add(khachHang); _context.SaveChanges(); MailMessage mm = new MailMessage("*****@*****.**", khachHang.Email); mm.Subject = "Kích hoạt tài khoản Eshop"; mm.Body = string.Format("Xin chào: <h1>{0}</h1> <br/> <h3>Click vào <a href='https://*****:*****@gmail.com", "eshop147258369"); smtp.Send(mm); HttpContext.Session.Set("kh", khachHang); return(RedirectToAction("Index", "Login")); } return(View(khachHang)); }
public IActionResult TaoHoaDonBT(string email, string hoten_ngnhan, string dc_nguoinhan, string ghichu, string sdt, string magiamgia) { KhachHang kh = new KhachHang(); kh.HoTen = hoten_ngnhan; kh.DiaChi = dc_nguoinhan; kh.DienThoai = sdt; kh.Email = email; db.KhachHang.Add(kh); db.SaveChanges(); // tạo hóa đơn var getKH = db.KhachHang.Where(p => p.Email == email).OrderByDescending(p => p.MaKh).Take(1); foreach (var titem in getKH) { HoaDon hd = new HoaDon { MaKh = titem.MaKh, HoTen = hoten_ngnhan, DiaChi = dc_nguoinhan, NgayDat = DateTime.Now, GhiChu = ghichu, SdtNguoinhan = sdt, MaTrangThai = 0, PhiVanChuyen = 35000, MaVoucher = magiamgia }; db.HoaDon.Add(hd); // tạo chi tiết hóa đơn // double tt = 0; double tongtienhang = 0; double tongthucthu = 0; foreach (var item in Carts) { tongtienhang += item.ThanhTien; HangHoa hh = db.HangHoa.SingleOrDefault(p => p.MaHh == item.MaHh); // tt = item.SoLuong * hh.DonGia * (1 - hh.GiamGia); ChiTietHd cthd = new ChiTietHd { MaHd = hd.MaHd, MaHh = item.MaHh, DonGia = hh.DonGia, GiamGia = hh.GiamGia, SoLuong = item.SoLuong, KichCo = item.KichCo }; db.ChiTietHd.Add(cthd); db.SaveChanges(); // trừ sản phẩm từ kho SanPhamKho spk = db.SanPhamKho.SingleOrDefault(p => p.MaHh == cthd.MaHh && p.KichCo == cthd.KichCo); if (spk.SoLuong >= cthd.SoLuong) { if (HttpContext.Session.Get <string>("ErrorGH") != null) { HttpContext.Session.Remove("ErrorGH"); } spk.SoLuong = spk.SoLuong - cthd.SoLuong; } else { HangHoa hangHoa = db.HangHoa.SingleOrDefault(p => p.MaHh == cthd.MaHh); string loi = "Hàng hóa có mã " + hangHoa.TenHh + " chỉ còn : " + spk.SoLuong + " sản phẩm"; HttpContext.Session.Set("ErrorGH", loi); db.ChiTietHd.Remove(cthd); db.HoaDon.Remove(hd); db.SaveChanges(); return(RedirectToAction("Index")); } } Voucher v = db.Voucher.Find(magiamgia); if (v != null) { tongthucthu = tongtienhang + 35000 - Convert.ToDouble(tongtienhang * v.GiamGia); } else { tongthucthu = tongtienhang + 35000; } hd.TongTienHang = tongtienhang; hd.TongThucThu = tongthucthu; db.SaveChanges(); HttpContext.Session.Set <string>("mess", "Hóa đơn của bạn đã được gửi tới cửa hàng vui lòng chờ kiểm tra mail để biết trạng thái đơn hàng của bạn . ESHOP"); HttpContext.Session.Remove("GioHang"); } return(RedirectToAction("Index")); }
public IActionResult TaoHoaDon(int makh, string hotenkh, string diachi, string hoten_ngnhan, string dc_nguoinhan, string ghichu, string sdt) { // tạo hóa đơn HoaDon hd = new HoaDon { MaKh = makh, HoTen = hoten_ngnhan, DiaChi = dc_nguoinhan, NgayDat = DateTime.Now, GhiChu = ghichu, SdtNguoinhan = sdt, MaTrangThai = 0, PhiVanChuyen = 35000 }; db.HoaDon.Add(hd); // tạo chi tiết hóa đơn // double tt = 0; KhachHang kh = db.KhachHang.SingleOrDefault(p => p.MaKh == makh); foreach (var item in Carts) { HangHoa hh = db.HangHoa.SingleOrDefault(p => p.MaHh == item.MaHh); // tt = item.SoLuong * hh.DonGia * (1 - hh.GiamGia); ChiTietHd cthd = new ChiTietHd { MaHd = hd.MaHd, MaHh = item.MaHh, DonGia = hh.DonGia, GiamGia = hh.GiamGia, SoLuong = item.SoLuong, KichCo = item.KichCo }; db.ChiTietHd.Add(cthd); db.SaveChanges(); // trừ sản phẩm từ kho SanPhamKho spk = db.SanPhamKho.SingleOrDefault(p => p.MaHh == cthd.MaHh && p.KichCo == cthd.KichCo); if (spk.SoLuong >= cthd.SoLuong) { if (HttpContext.Session.Get <string>("ErrorGH") != null) { HttpContext.Session.Remove("ErrorGH"); } spk.SoLuong = spk.SoLuong - cthd.SoLuong; } else { HangHoa hangHoa = db.HangHoa.SingleOrDefault(p => p.MaHh == cthd.MaHh); string loi = "Hàng hóa có mã " + hangHoa.TenHh + " chỉ còn : " + spk.SoLuong + " sản phẩm"; HttpContext.Session.Set("ErrorGH", loi); db.ChiTietHd.Remove(cthd); db.HoaDon.Remove(hd); db.SaveChanges(); return(RedirectToAction("Index")); } } HttpContext.Session.Set <string>("mess", "Hóa đơn của bạn đã được gửi tới cửa hàng vui lòng chờ kiểm tra mail để biết trạng thái đơn hàng của bạn . ESHOP"); HttpContext.Session.Remove("GioHang"); return(RedirectToAction("Index")); }
//static EventWaitHandle _wh = new AutoResetEvent(false); //static Thread _worker; public void DeEnqueue() { try { string stq = "Server=47.92.198.126;Database=ESHOP;user id=eshop;password=eshop123456;MultipleActiveResultSets=true"; var optionsBuilder = new DbContextOptionsBuilder <ESHOPContext>(); optionsBuilder.UseSqlServer(stq); using (var db = new ESHOPContext(optionsBuilder.Options)) { TSeckillArticle articleInfo = null;//存储如果存在修改需要查询库存 while (true) { ModelQueueParam data; var saved = false;//处理并发字段 lock (_locker) { //根据数据内容进行循环插入数据 if (GlobalParam.queue.TryDequeue(out data)) { } } //存在下单人 if (data != null) { string userId = data.userId; string seckillArticleId = data.seckillArticleId; //查询秒杀商品信息 articleInfo = db.TSeckillArticle.Where(u => u.Id == seckillArticleId).FirstOrDefault(); int articleStockNum = articleInfo?.ArticleStockNum ?? 0; if (articleStockNum == 0) { //库存没有 等待信号 // GlobalParam._wh.WaitOne(); } else { //存在库存就进行消费库存 articleInfo.ArticleStockNum -= 1; //同时添加订单信息 string id = Guid.NewGuid().ToString("N"); DateTime nowTime = DateTime.Now; TOrder order = new TOrder(); order.Id = id; order.UserId = userId; order.ArticleId = seckillArticleId; order.OrderNum = id; order.OrderTotalPrice = 50; order.AddTime = nowTime; order.UpdateTime = nowTime; order.PayTime = nowTime; order.DeliverTime = nowTime; order.FinishTime = nowTime; order.OrderStatus = 3; order.OrderPhone = "12451554"; order.OrderAddress = "地址地址地址"; order.OrderRemark = "订单备注"; order.DelFlag = 1; //进行数据库真实操作 db.TOrder.Attach(order); db.TOrder.Add(order); //db.Entry(articleInfo).State = EntityState.Modified; #region 并发处理 //处理并发 #endregion } } else { //是否处理过数据 if (articleInfo != null) { // articleInfo.ArticleStockNum -= dequeueNum; db.Entry(articleInfo).State = EntityState.Modified; //处理并发 while (!saved) { try { db.SaveChanges(); saved = true; } catch (DbUpdateConcurrencyException ex) { foreach (var entry in ex.Entries) { if (entry.Entity is TSeckillArticle) { var proposedValues = entry.CurrentValues; //当前值 var databaseValues = entry.GetDatabaseValues(); //数据库值 entry.OriginalValues.SetValues(databaseValues); } } } } } //库存没有 等待信号 //GlobalParam._wh.WaitOne(); } } } } catch (Exception ex) { } }