public ActionResult Index(int page=1)
        {
            if (!this._nhanvien_permission.Contains("donhang_view"))
            {
                return _fail_permission("donhang_view");
            }

            DonHangController ctr=new DonHangController();
            //
            Boolean timkiem_ngay_from;
            Boolean timkiem_ngay_to;
            DateTime ngay_from = TextLibrary.ToDateTime(timkiem_donhang["ngay_from"], out timkiem_ngay_from);
            DateTime ngay_to = TextLibrary.ToDateTime(timkiem_donhang["ngay_to"], out timkiem_ngay_to);
            Boolean timkiem_ngay = timkiem_ngay_from && timkiem_ngay_to;
            //Pagination
                Pagination pg = new Pagination();
                int max_item_per_page = TextLibrary.ToInt(this.timkiem_donhang["max_item_per_page"]);//get from setting
                pg.set_current_page(page);
                pg.set_max_item_per_page(max_item_per_page);
                pg.set_total_item(
                    ctr.timkiem_count(
                        timkiem_donhang["id"],
                        timkiem_donhang["khachhang_ten"],
                        TextLibrary.ToInt(timkiem_donhang["tongtien_from"]),
                        TextLibrary.ToInt(timkiem_donhang["tongtien_to"]),
                        timkiem_ngay,
                        ngay_from,
                        ngay_to,
                        timkiem_donhang["thanhtoan_tructuyen"],
                        timkiem_donhang["trangthai"],
                        timkiem_donhang["active"]
                        )
                    );
                pg.update();

            ViewBag.pagination = pg;
            ViewBag.DonHang_List = ctr.timkiem(
                timkiem_donhang["id"],
                timkiem_donhang["khachhang_ten"],
                TextLibrary.ToInt(timkiem_donhang["tongtien_from"]),
                TextLibrary.ToInt(timkiem_donhang["tongtien_to"]),
                timkiem_ngay,
                ngay_from,
                ngay_to,
                timkiem_donhang["thanhtoan_tructuyen"],
                timkiem_donhang["trangthai"],
                timkiem_donhang["active"],
                timkiem_donhang["order_by"],
                TextLibrary.ToBoolean(timkiem_donhang["order_desc"])
                ,pg.start_point,pg.max_item_per_page
                );
            ViewBag.timkiem_donhang = timkiem_donhang;
            //pagination

            this._set_activetab(new String[] { "QuanLyDonHang","DonHang_"+timkiem_donhang["trangthai"] });
            return View();
        }
 public ActionResult Index(int id=0)
 {
     if (!this._nhanvien_permission.Contains("donhang_view"))
     {
         return _fail_permission("donhang_view");
     }
     DonHangController ctr=new DonHangController();
     DonHang obj = ctr.get_by_id(id);
     if (obj == null)
     {
         return RedirectToAction("Index","AdminDonHangs");
     }
     ViewBag.donhang = obj;
     string[] state = (string[])TempData["state"];
     if (state != null)
     {
         this._state.AddRange(state);
     }
     ViewBag.State = this._state;
     return View();
 }
        public ActionResult CheckOut()
        {
            DonHangController ctr = new DonHangController();
            TinhTPController ctr_tinhtp = new TinhTPController();
            List<string> validate = ctr.validate(this._giohang, out this._giohang);
            //kiểm tra giỏ hàng
            if (validate.Count > 0)
            {
                //giỏ hàng chưa thể thanh toán
                return RedirectToAction("Index","FrontCart");
            }
            //nếu chưa đang nhập thì chuyển đến trang đăng ký
            if (!this._is_logged_in())
            {
                return RedirectToAction("Login_Or_Register", "FrontCart");
            }
            //nếu đã đăng nhập thì chuyển đến giao diện nhập thông tin người nhận
            //tự động pass thông tin người đang đăng nhập vào thông tin người nhận
                this._giohang.nguoinhan_diachi_tinhtp = ctr_tinhtp.get_all().FirstOrDefault();//mặc định lấy tỉnh đầu
                this._giohang.thanhtoan_tructuyen = false;
                if (this._nhanvien != null)
                {
                    this._giohang.nguoinhan_diachi = "";
                    this._giohang.nguoinhan_sdt = "";
                    this._giohang.nguoinhan_ten = this._nhanvien.tendaydu;
                }
                else if (this._khachhang != null)
                {
                    this._giohang.nguoinhan_diachi = this._khachhang.diachi;
                    this._giohang.nguoinhan_sdt = this._khachhang.sdt;
                    this._giohang.nguoinhan_ten = this._khachhang.tendaydu;
                }
            //kiểm tra thông tin người nhận
            validate.AddRange(ctr.validate_checkout(this._giohang,out this._giohang));

            ViewBag.giohang = this._giohang;
            ViewBag.tinhtp_list = ctr_tinhtp.get_all();
            ViewBag.State = validate;
            return View();
        }
 public ActionResult Submit()
 {
     int id = TextLibrary.ToInt(Request["donhang_id"]);
     DonHangController ctr=new DonHangController();
     DonHang obj= ctr.get_by_id(id);
     if(obj==null)
     {
         return RedirectToAction("Index","AdminDonHangs");
     }
     //check permision
     if (obj.nhanvien!=null && this._nhanvien.id == obj.nhanvien.id)
     {
         //owner permission override
     }
     else if (!this._nhanvien_permission.Contains("donhang_edit"))
     {
         return _fail_permission("donhang_edit");
     }
     string trangthai = TextLibrary.ToString(Request["donhang_trangthai"]);
     if (trangthai.Equals("dabihuy"))
     {
         obj._huy_don_hang(ctr._db);
     }
     else
     {
         obj.trangthai = trangthai;
     }
     //xét nhân viên xử lý đơn hàng
     if (obj.nhanvien == null)
     {
         obj.nhanvien = ctr._db.ds_nhanvien.Where(x => x.id == this._nhanvien.id).FirstOrDefault();
     }
     //luu
     ctr._db.SaveChanges();
     TempData["state"] = new string[] { "edit_ok" };
     return RedirectToAction("Index", "AdminDonHang", new { id=obj.id });
 }
 public ActionResult CheckOut_Submit()
 {
     DonHangController ctr = new DonHangController();
     TinhTPController ctr_tinhtp = new TinhTPController();
     List<string> validate= new List<string>();
     validate.AddRange(ctr.validate(this._giohang, out this._giohang));
     //giỏ hàng chưa sẵn sàng để qua bước này
     if(validate.Count>0)
     {
         return RedirectToAction("Index","FrontCart");
     }
     //get post value
     string nguoinhan_ten = TextLibrary.ToString(Request["nguoinhan_ten"]);
     string nguoinhan_sdt = TextLibrary.ToString(Request["nguoinhan_sdt"]);
     string nguoinhan_diachi= TextLibrary.ToString(Request["nguoinhan_diachi"]);
     Boolean thanhtoan_tructuyen = TextLibrary.ToBoolean(Request["thanhtoan_tructuyen"]);
     int tinhtp_id = TextLibrary.ToInt(Request["nguoinhan_tinhtp_id"]);
     //assign
     this._giohang.nguoinhan_ten = nguoinhan_ten;
     this._giohang.nguoinhan_diachi = nguoinhan_diachi;
     this._giohang.nguoinhan_sdt = nguoinhan_sdt;
     this._giohang.thanhtoan_tructuyen = thanhtoan_tructuyen;
     this._giohang.nguoinhan_diachi_tinhtp = ctr_tinhtp.get_by_id(tinhtp_id);
     this._giohang.phivanchuyen = this._giohang.nguoinhan_diachi_tinhtp.phivanchuyen;
     //validate
     validate.AddRange(ctr.validate_checkout(this._giohang, out this._giohang));
     if (validate.Count <= 0)
     {
         //chuyển đến trang xác nhận đơn hàng lần cuối
         return RedirectToAction("Confirm", "FrontCart");
     }
     //nếu vẫn chưa thì hiển thị lỗi và thông tin ngược lại
     ViewBag.State = validate;
     ViewBag.giohang = this._giohang;
     ViewBag.tinhtp_list = ctr_tinhtp.get_all();
     return View("CheckOut");
 }
        protected Boolean _Add_Or_Update(int ctsp_id=0, int soluong=0, Boolean update_from_cart=false)
        {
            List<string> validate = new List<string>();
            ChiTietSPController ctr = new ChiTietSPController();
            DonHangController ctr_donhang = new DonHangController();

            //validate id
            if (!ctr.is_exist(ctsp_id))
            {
                return false;
            }

            //get obj
            ChiTiet_DonHang obj = this._giohang.ds_chitiet_donhang.Where(x => x.chitietsp.id == ctsp_id).FirstOrDefault();
            //add or update
            if (obj == null)
            {
                //chưa có trong cart => thêm vào
                ChiTiet_DonHang tmp = new ChiTiet_DonHang();
                tmp.chitietsp = new ChiTietSPController().get_by_id(ctsp_id);
                tmp.dongia = tmp.chitietsp.sanpham.gia;
                tmp.soluong = soluong;
                //just add
                this._giohang.ds_chitiet_donhang.Add(tmp);
            }
            else
            {
                //đã có trong cart
                if (update_from_cart)
                {
                    //cập nhật từ giỏ hàng
                    obj.soluong = soluong;
                }
                else
                {
                    //thêm từ nơi khác
                    obj.soluong += soluong;
                }
            }
            //validate giohang
            validate.AddRange(ctr_donhang.validate(this._giohang, out this._giohang));
            //finally call save
            this._save_cart_to_session();

            TempData["state"] = validate;
            return true;
        }
 public ActionResult Payment()
 {
     DonHangController ctr = new DonHangController();
     List<string> validate = new List<string>();
     //kiểm tra đơn hàng lần nữa xem có bị lỗi hết hàng
     validate.AddRange(ctr.validate(this._giohang, out this._giohang));
     //giỏ hàng chưa sẵn sàng để qua bước này
     if (validate.Count > 0)
     {
         return RedirectToAction("Index", "FrontCart");
     }
     //kiểm tra thông tin người nhận lần nữa để đảm bảo
     validate.AddRange(ctr.validate_checkout(this._giohang, out this._giohang));
     if (validate.Count > 0)
     {
         return RedirectToAction("CheckOut", "FrontCart");
     }
     //xét hình thức thanh toán
     if (this._giohang.thanhtoan_tructuyen)
     {
         return RedirectToAction("Online_Payment", "FrontCart", new { provider="OnePay"});
     }
     return RedirectToAction("Finish","FrontCart");
 }
 public ActionResult Index()
 {
     DonHangController ctr = new DonHangController();
     //
     ViewBag.giohang = this._giohang;
     List<string> validate = ctr.validate(this._giohang, out this._giohang);
     validate.AddRange( TempData["state"] == null ? new List<string>() : (List<string>)TempData["state"] );
     ViewBag.State = validate;
     return View();
 }
 public ActionResult Finish()
 {
     DonHangController ctr = new DonHangController();
     List<string> validate = new List<string>();
     //kiểm tra đơn hàng lần nữa xem có bị lỗi hết hàng
     validate.AddRange(ctr.validate(this._giohang, out this._giohang));
     //giỏ hàng chưa sẵn sàng để qua bước này
     if (validate.Count > 0)
     {
         return RedirectToAction("Index", "FrontCart");
     }
     //kiểm tra thông tin người nhận lần nữa để đảm bảo
     validate.AddRange(ctr.validate_checkout(this._giohang, out this._giohang));
     if (validate.Count > 0)
     {
         return RedirectToAction("CheckOut", "FrontCart");
     }
     //lưu đơn hàng
     int max_id = ctr.add(this._giohang);
     //reload
     this._giohang = ctr.get_by_id(max_id);
     //gửi mail cho kh
         GMailLibrary gmail = new GMailLibrary();
         gmail.receive_email = this._giohang._get_khachhang_email();
         gmail.Generate_DonHang_Html(this._giohang);
         try
         {
             gmail.Send();
         }catch(Exception)
         {
             //nothing
         }
     //xóa đơn hàng khỏi hệ thống ngay và luôn
     this._giohang = new DonHang();
     this._save_cart_to_session();
     //cập nhật ngay cho giao diện trả về
     ViewBag.giohang = this._giohang;
     //hiện thông báo hoàn tất, kết thúc quá trình phức tạp
     return View();
 }
        public ActionResult Confirm()
        {
            DonHangController ctr = new DonHangController();
            List<string> validate = new List<string>();
            //kiểm tra đơn hàng lần nữa xem có bị lỗi hết hàng
            validate.AddRange(ctr.validate(this._giohang,out this._giohang));
                //giỏ hàng chưa sẵn sàng để qua bước này
                if (validate.Count > 0)
                {
                    return RedirectToAction("Index", "FrontCart");
                }

            //kiểm tra thông tin người nhận lần nữa để đảm bảo
                validate.AddRange(ctr.validate_checkout(this._giohang,out this._giohang));
                if (validate.Count > 0)
                {
                    return RedirectToAction("CheckOut","FrontCart");
                }
            //hiện thông tin đơn hàng chuẩn bị lưu vào hệ thống
                ViewBag.State = new List<string>();
            //kết thúc chu trình
            return View();
        }