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"));
        }
Beispiel #6
0
        public IActionResult ChangeStatus(int id)
        {
            var kh = _context.KhachHang.Find(id);

            if (kh != null)
            {
                kh.TrangThaiHd = !kh.TrangThaiHd;
                _context.SaveChanges();
            }
            return(RedirectToAction("Index"));
        }
Beispiel #7
0
        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));
 }
Beispiel #11
0
        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)
            {
            }
        }