public rs goitinhtien(GoiTinhTienForm model)
        {
            rs r;

            using (var __db = new vuong_cms_context())
            {
                if (ModelState.IsValid)
                {
                    var entity = __db.DonHangs.Find(model.DonHangID);
                    if (model.TienKhachDua < entity.TongTienHang)
                    {
                        throw new Exception("Tiền khách đưa không đủ!");
                    }
                    entity.SoLanGoiTinhTien++;
                    entity.TienKhachDua       = model.TienKhachDua;
                    entity.LanCuoiGoiTinhTien = DateTime.Now;
                    __db.SaveChanges();
                    r = rs.T("Quán đã nhận được yêu cầu gọi tính tiền!", DonHangVM.map(entity));
                    IHubContext context = GlobalHost.ConnectionManager.GetHubContext <UsersOnLine>();
                    context.Clients.All.notify_goitinhtien(entity.BaseUserId, "Yêu cầu tính tiền bàn: " + entity.Ban);
                }
                else
                {
                    //all error
                    r = rs.F("Lỗi, vui lòng thử lại. " + string.Join(";", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage).Distinct()));
                }
            }
            return(r);
        }
        public JsonResult ajax_get_edit(int id, int quanid)
        {
            var       en = __db.DonHangs.Find(id);
            DonHangVM dh = new DonHangVM();

            dh.TrangThaiGiaoHangId  = en.TrangThaiGiaoHangId;
            dh.TrangThaiThanhToanId = en.TrangThaiThanhToanId;
            dh.GhiChuDonHang        = en.GhiChuDonHang;
            dh.Ban            = en.Ban;
            dh.DiaChiGiaoHang = en.DiaChiGiaoHang;
            dh.SDT            = en.SDT;
            dh.YeuCauKhac     = en.YeuCauKhac;

            List <ThucDonCTSLVM> lst = new List <ThucDonCTSLVM>();

            foreach (var item in en.CTDonHangs)
            {
                ThucDonCTSLVM ct = new ThucDonCTSLVM();
                ct.Id                     = item.ThucDonId;
                ct.GiaId                  = item.GiaId;
                ct.TenGia                 = item.TenGia;
                ct.ProductId              = item.SanPhamId;
                ct.ThucDon                = null;
                ct.ThucDonId              = item.ThucDonId;
                ct.SoLuong                = item.SoLuong;
                ct.ProductId              = item.SanPhamId;
                ct.Product                = new Product();
                ct.Product.Id             = item.SanPhamId;
                ct.Product.Price          = (int)item.DonGia;
                ct.Product.MaSo           = item.SanPham.MaSo;
                ct.Product.ProductName    = item.SanPham.ProductName + "<code>" + item.TenGia + "</code>";
                ct.Product.ProductCatId   = item.SanPham.ProductCatId;
                ct.Product.ThumbnailImage = item.SanPham.ThumbnailImage;
                lst.Add(ct);
            }
            dh.ThucDonVMs = lst;
            dh.DSGopYJson = en.GopYs.OrderByDescending(o => o.Id).ToList().Select(s => new GopYJson()
            {
                Id                = s.Id,
                NoiDungGopY       = s.NoiDungGopY,
                ThoiGian          = s.ModifiedDate.XuatDateTime() + "-" + s.ModifiedDate.TimeAgo(),
                NoiDungPhanHoiMoi = "",
                Replies           = s.GopYReplies.ToList().Select(r => new GopYReplyJson()
                {
                    NoiDung      = r.NoiDung,
                    NguoiPhanHoi = r.UserReply.Fullname,
                    ThoiGian     = r.ModifiedDate.XuatDateTime() + "-" + r.ModifiedDate.TimeAgo(),
                }).ToList()
            }).ToList();
            return(Json(dh, JsonRequestBehavior.AllowGet));
        }
        public ListPagingJson <DonHangVM> layds(int userid, string token, int page, int pageSize)
        {
            vuong_cms_context __db = new vuong_cms_context();
            //initial
            var paging = new ListPagingJson <DonHangVM>();

            paging.Paging.RecordsPerPage = pageSize;
            paging.Paging.CurrentPage    = page;
            //calculator
            var query = __db.DonHangs.Where(w => w.UserId == userid);

            paging.Number1             = query.Count(c => c.TrangThaiThanhToanId == 1);
            paging.Paging.TotalRecords = query.Count();
            paging.List = DonHangVM.map(query.OrderByDescending(o => o.Id).Skip((page - 1) * pageSize).Take(pageSize));
            return(paging);
        }
        public ListPagingJson <DonHangVM> laydsdevice(string uniqueID, int trangthaithanhtoanid, int page, int pageSize)
        {
            //initial
            var paging = new ListPagingJson <DonHangVM>();

            paging.Paging.RecordsPerPage = pageSize;
            paging.Paging.CurrentPage    = page;

            vuong_cms_context __db = new vuong_cms_context();

            //calculator
            var query = __db.DonHangs.Where(w => w.UniqueID == uniqueID);

            paging.Number1 = query.Count(c => c.TrangThaiThanhToanId == 1);
            if (trangthaithanhtoanid != -1)
            {
                query = query.Where(w => w.TrangThaiThanhToanId == trangthaithanhtoanid);
            }
            paging.Paging.TotalRecords = query.Count();
            paging.List = DonHangVM.map(query.OrderByDescending(o => o.Id).Skip((page - 1) * pageSize).Take(pageSize));
            //so don hang chua thanh toan
            return(paging);
        }
        public rs gopy(GopYDonHangForm model)
        {
            rs r;

            using (var __db = new vuong_cms_context())
            {
                if (ModelState.IsValid)
                {
                    var  entity = __db.DonHangs.Find(model.DonHangID);
                    GopY gop    = new GopY();
                    gop.DonHangId   = model.DonHangID;
                    gop.NoiDungGopY = model.NoiDung;
                    gop.CreatedDate = DateTime.Now;
                    __db.GopY.Add(gop);
                    __db.SaveChanges();
                    r = rs.T("Chúng tôi đã ghi nhận góp ý của bạn, xin cám ơn!", DonHangVM.map(entity));

                    IHubContext context = GlobalHost.ConnectionManager.GetHubContext <UsersOnLine>();
                    if (entity.HinhThucMuaHangId == 1)
                    {
                        context.Clients.All.notify_gopy(entity.BaseUserId, "Nhận được góp ý tại bàn: " + entity.Ban);
                    }
                    else
                    {
                        context.Clients.All.notify_gopy(entity.BaseUserId, "Nhận được góp ý *" + entity.HinhThucMuaHang.Ten + "*");
                    }
                }
                else
                {
                    //all error
                    r = rs.F("Lỗi, vui lòng thử lại. " + string.Join(";", ModelState.Values
                                                                     .SelectMany(x => x.Errors)
                                                                     .Select(x => x.ErrorMessage).Distinct()));
                }
            }
            return(r);
        }