Exemplo n.º 1
0
        public string RemoteSearch(
            string keyPrevBoundary,
            string keyNextBoundary,
            FilterIncomeReportViewModel SearchViewModel,
            int numItemsPerPage = 20)
        {
            if (!Session.isUserSession())
            {
                return("");
            }

            /*Navigation*/
            IncomeReportRemoteSearchViewModel DataTableViewModel;
            //Parse JsonQuery into stuff


            //Default
            var authorizeGroups = ((TaiKhoan)Session["User"]).Nhom;

            if (!string.IsNullOrEmpty(keyNextBoundary) ||
                string.IsNullOrEmpty(keyPrevBoundary)) // Move next and default
            {
                DataTableViewModel = IncomeReport_BUS.getNextIncomeReports(keyNextBoundary, numItemsPerPage, SearchViewModel, authorizeGroups);
            }
            else
            {
                DataTableViewModel = IncomeReport_BUS.getPrevIncomeReports(keyPrevBoundary, numItemsPerPage);
            }

            //Serialize thành json
            string json = JsonConvert.SerializeObject(DataTableViewModel);

            return(json);
        }
Exemplo n.º 2
0
        public static IncomeReportRemoteSearchViewModel getNextIncomeReports(
            string keyNextBoundary,
            int numDisplayItem,
            FilterIncomeReportViewModel SearchViewModel,
            ICollection <Nhom> AuthorizedGroups)
        {
            IncomeReportRemoteSearchViewModel ViewModel = new IncomeReportRemoteSearchViewModel();
            DataTable dt = IncomeReport_DAO.getNextIncomeReports(keyNextBoundary, numDisplayItem + 1, SearchViewModel, AuthorizedGroups);

            int rowCount = dt.Rows.Count;

            ViewModel.isFirstPage = String.IsNullOrEmpty(keyNextBoundary)?true:false;


            // Lấy hơn một dòng để kiểm tra phía trước còn dòng nào
            ViewModel.isLastPage = rowCount <= numDisplayItem ? true : false;

            ViewModel.data = dt;

            //Tính toán để duy chuyển
            if (rowCount > numDisplayItem)
            {
                ViewModel.data.Rows.RemoveAt(rowCount - 1); // dòng cuối là dummy
                ViewModel.keyPrevBoundary = ViewModel.data.Rows[0]["MÃ ĐƠN"].ToString();
                ViewModel.keyNextBoundary = ViewModel.data.Rows[rowCount - 2]["MÃ ĐƠN"].ToString();
            }
            else if (rowCount > 0)
            {
                ViewModel.keyPrevBoundary = ViewModel.data.Rows[0]["MÃ ĐƠN"].ToString();
                ViewModel.keyNextBoundary = ViewModel.data.Rows[rowCount - 1]["MÃ ĐƠN"].ToString();
            }
            else // không tìm thấy thông tin nào trùng vào bộ lọc
            {
                ViewModel.isEmpty = true;
            }

            if (!ViewModel.isEmpty)
            {
                //Định dạng lai ngày tháng năm
                foreach (DataRow row in ViewModel.data.Rows)
                {
                    row["NGÀY HIỆU LỰC ĐƠN"] = Helper.convertToCorrectDateTime(row["NGÀY HIỆU LỰC ĐƠN"].ToString());
                }
            }

            return(ViewModel);
        }
Exemplo n.º 3
0
        public static DataTable getNextIncomeReports(
            string keyNextBoundary,
            int numDisplayItem,
            FilterIncomeReportViewModel SearchViewModel,
            ICollection <Nhom> authorizedGroups
            )
        {
            //Nếu permission rỗng

            string sql = $@"
SELECT DISTINCT TOP (@numDisplayItem)
dbo.ZTRNPF$.CNTBRANCH AS 'MÃ CHI NHÁNH',
dbo.ZTRNPF$.BATCACTYR AS 'NĂM TÀI CHÍNH',
dbo.DESCPF$.LONGDESC AS  'TÊN PHÒNG BAN',
dbo.CHEXPF$.ZDEPTCD AS 'MÃ PHÒNG BAN',
dbo.ZTRNPF$.RLDGACCT AS 'MÃ ĐƠN',
dbo.CLNTPF$.LSURNAME AS 'HỌ VÀ TÊN LÓT',
dbo.CLNTPF$.LGIVNAME AS 'TÊN KHÁCH HÀNG',
dbo.ZTRNPF$.ACCNUM AS 'MÃ ĐẠI LÝ',
dbo.AGNTPF$.AGTYPE01 AS 'LOẠI ĐẠI LÝ',
dbo.ZTRNPF$.ORIGCURR AS 'ĐƠN VỊ TIỀN TỆ',
SUM(dbo.ZTRNPF$.TRANAMT01) AS 'PHÍ GROSS',
SUM(dbo.ZTRNPF$.TRANAMT03) AS 'GIẢM PHÍ', 
SUM(dbo.ZTRNPF$.TRANAMT04) AS 'HOA HỒNG ĐẠI LÝ',
SUM(dbo.ZTRNPF$.TRANAMT06) AS 'PHÍ NET',
SUM(dbo.ZTRNPF$.TRANAMT07) AS 'THUẾ VAT',
SUM(dbo.ZTRNPF$.TRANAMT01 - dbo.ZTRNPF$.TRANAMT03 +dbo.ZTRNPF$.TRANAMT07) AS 'PHÍ KHÁCH HÀNG PHẢI TRẢ',
dbo.ZTRNPF$.CCDATE AS 'NGÀY HIỆU LỰC ĐƠN',
dbo.CHDRPF$.PAYPLAN AS 'MÃ KỲ PHÍ'
FROM dbo.AGNTPF$,dbo.CLNTPF$,dbo.DESCPF$, dbo.ZTRNPF$
INNER JOIN dbo.PREMPF$ ON dbo.ZTRNPF$.RLDGACCT = dbo.PREMPF$.CHDRNO
INNER JOIN dbo.RISKPF$ ON dbo.ZTRNPF$.RLDGACCT = dbo.RISKPF$.CHDRNO
INNER JOIN dbo.CHDRPF$ ON dbo.ZTRNPF$.RLDGACCT = dbo.CHDRPF$.CHDRNUM
INNER JOIN dbo.CHEXPF$ ON dbo.ZTRNPF$.RLDGACCT = dbo.CHEXPF$.CHDRNUM
WHERE 
dbo.AGNTPF$.AGNTNUM = dbo.ZTRNPF$.ACCNUM
AND dbo.CLNTPF$.CLNTNUM= dbo.CHDRPF$.COWNNUM
AND dbo.DESCPF$.DESCITEM= dbo.CHEXPF$.ZDEPTCD
AND dbo.CHDRPF$.TRANNO = dbo.ZTRNPF$.TRANNO";



            //Thêm parameter
            SqlCommand cmd = new SqlCommand(sql, Helper_DAO.createAndOpenConnection());

            if (!string.IsNullOrEmpty(keyNextBoundary)) // Nếu chuỗi rỗng không so sánh
            {
                cmd.CommandText += $" AND dbo.ZTRNPF$.RLDGACCT > @keyNextBoundary";
                cmd.Parameters.Add("keyNextBoundary", SqlDbType.NVarChar);
                cmd.Parameters["keyNextBoundary"].Value = keyNextBoundary;
            }

            /*Ngày Hiệu lực đơn từ*/
            if (!string.IsNullOrEmpty(SearchViewModel.NgayHieuLucTu)) // Nếu chuỗi rỗng không so sánh
            {
                cmd.CommandText += $" AND dbo.ZTRNPF$.CCDATE >= @NgayHieuLucTu";
                cmd.Parameters.Add("NgayHieuLucTu", SqlDbType.NVarChar);
                cmd.Parameters["NgayHieuLucTu"].Value = SearchViewModel.NgayHieuLucTu;
            }

            /*Ngày Hiệu lực đơn tới*/
            if (!string.IsNullOrEmpty(SearchViewModel.NgayHieuLucDen)) // Nếu chuỗi rỗng không so sánh
            {
                cmd.CommandText += $" AND dbo.ZTRNPF$.CCDATE <= @NgayHieuLucDen";
                cmd.Parameters.Add("NgayHieuLucDen", SqlDbType.NVarChar);
                cmd.Parameters["NgayHieuLucDen"].Value = SearchViewModel.NgayHieuLucDen;
            }

            /*Mã chi nhánh*/
            //Đặt cờ nếu có it nhất 1 quyền thì Ok, không có quyền thì return datatable rỗng
            bool IsHavingAtLeastOnePermision = false;

            if (SearchViewModel.DanhSachChiNhanh != null && SearchViewModel.DanhSachChiNhanh.Count() > 0) // Nếu chuỗi rỗng không so sánh
            {
                //List<string> parameters = new List<string>();
                //for (int i = 0; i <= SearchViewModel.DanhSachChiNhanh.Length-1; i++)
                //{
                //    parameters.Add(string.Format("@DanhSachChiNhanh{0}", i));
                //    cmd.Parameters.AddWithValue(parameters[i], SearchViewModel.DanhSachChiNhanh[i].value[0]);
                //}

                //string parajoin = string.Join(",", parameters);

                //cmd.CommandText += $" AND dbo.ZTRNPF$.CNTBRANCH in ({parajoin})";
                Entities entities = new Entities();
                foreach (Nhom group in authorizedGroups)
                {
                    //Mỗi chi nhánh của nhóm
                    foreach (NhomThuocChiNhanh affiliationInGroup in group.NhomThuocChiNhanh)
                    {
                        if (SearchViewModel.DanhSachChiNhanh.Where(p => p.value == affiliationInGroup.id.ToString()).Count() > 0)
                        {
                            //Test quyền Quyền xem có không

                            if (createPermisionQuery(
                                    cmd,
                                    affiliationInGroup.QuyenXem_NhomThuocChiNhanh.Select(p => p.id).ToArray(),
                                    affiliationInGroup.MaChiNhanh))
                            {
                                IsHavingAtLeastOnePermision = true;
                            }
                        }
                    }
                }
            }
            else
            {
                //Lấy tất cả chi nhánh được cấp quyền

                //Mỗi nhóm của tài khoản
                foreach (Nhom group in authorizedGroups)
                {
                    //Mỗi chi nhánh của nhóm
                    foreach (NhomThuocChiNhanh affiliationInGroup in group.NhomThuocChiNhanh)
                    {
                        //Quyền xem
                        if (createPermisionQuery(
                                cmd,
                                affiliationInGroup.QuyenXem_NhomThuocChiNhanh.Select(p => p.id).ToArray(),
                                affiliationInGroup.MaChiNhanh))
                        {
                            IsHavingAtLeastOnePermision = true;
                        }
                    }
                }
            }

            //Nếu không có quyền nào trả về datatable rỗng
            if (!IsHavingAtLeastOnePermision)
            {
                return(new DataTable());
            }

            ///*Mã Phòng bah*/
            //if (SearchViewModel.DanhSachPhongBan != null && SearchViewModel.DanhSachPhongBan.Count() > 0) // Nếu chuỗi rỗng không so sánh
            //{
            //    List<string> parameters = new List<string>();
            //    for (int i = 0; i <= SearchViewModel.DanhSachPhongBan.Length - 1; i++)
            //    {
            //        parameters.Add(string.Format("@DanhSachPhongBan{0}", i));
            //        cmd.Parameters.AddWithValue(parameters[i], SearchViewModel.DanhSachPhongBan[i].value[0]);
            //    }

            //    string parajoin = string.Join(",", parameters);

            //    cmd.CommandText += $" AND dbo.CHEXPF$.ZDEPTCD in ({parajoin})";
            //}

            ///*Loại đại lý*/
            //if (SearchViewModel.DanhSachLoaiDaiLy != null && SearchViewModel.DanhSachLoaiDaiLy.Count() > 0) // Nếu chuỗi rỗng không so sánh
            //{
            //    List<string> parameters = new List<string>();
            //    for (int i = 0; i <= SearchViewModel.DanhSachLoaiDaiLy.Length - 1; i++)
            //    {
            //        parameters.Add(string.Format("@DanhSachLoaiDaiLy{0}", i));
            //        cmd.Parameters.AddWithValue(parameters[i], SearchViewModel.DanhSachLoaiDaiLy[i].value[0]);
            //    }

            //    string parajoin = string.Join(",", parameters);

            //    cmd.CommandText += $" AND dbo.AGNTPF$.AGTYPE01 in ({parajoin})";
            //}

            ///*Mã đại lý*/
            //if (SearchViewModel.DanhSachMaDaiLy != null && SearchViewModel.DanhSachMaDaiLy.Count() > 0) // Nếu chuỗi rỗng không so sánh
            //{
            //    List<string> parameters = new List<string>();
            //    for (int i = 0; i <= SearchViewModel.DanhSachMaDaiLy.Length - 1; i++)
            //    {
            //        parameters.Add(string.Format("@DanhSachMaDaiLy{0}", i));
            //        cmd.Parameters.AddWithValue(parameters[i], SearchViewModel.DanhSachMaDaiLy[i].value[0]);
            //    }

            //    string parajoin = string.Join(",", parameters);

            //    cmd.CommandText += $" AND dbo.ZTRNPF$.ACCNUM in ({parajoin})";
            //}

            /*Họ tên khách hàng*/
            //if (SearchViewModel.DanhSachChiNhanh != null && SearchViewModel.DanhSachHoTenKhachHang.Count() > 0) // Nếu chuỗi rỗng không so sánh
            //{
            //    List<string> parametersHoKhachHang = new List<string>();
            //    for (int i = 0; i <= SearchViewModel.DanhSachHoTenKhachHang.Length - 1; i++)
            //    {
            //        parametersHoKhachHang.Add(string.Format("@DanhSachHoKhachHang{0}", i));
            //        cmd.Parameters.AddWithValue(
            //            parametersHoKhachHang[i],
            //            SearchViewModel.DanhSachHoTenKhachHang[i].label);

            //    }

            //    string paraHojoin = string.Join(",", parametersHoKhachHang);

            //    cmd.CommandText += $" AND dbo.CLNTPF$.LSURNAME+' '+dbo.CLNTPF$.LGIVNAME in ({paraHojoin})";
            //}


            //if(!String.IsNullOrEmpty(SearchViewModel.HoTenKhachHang))
            //{
            //    cmd.Parameters.Add("Surname", SqlDbType.NVarChar, 50);
            //    cmd.Parameters["Surname"].Value =  SearchViewModel.HoTenKhachHang;

            //    cmd.Parameters.Add("Givname", SqlDbType.NVarChar, 50);
            //    cmd.Parameters["Givname"].Value = SearchViewModel.HoTenKhachHang;


            //    cmd.CommandText += $" AND ( dbo.CLNTPF$.LSURNAME COLLATE SQL_Latin1_General_CP1_CI_AI LIKE N'%'+@Surname+'%'";
            //    cmd.CommandText += $" OR dbo.CLNTPF$.LGIVNAME COLLATE SQL_Latin1_General_CP1_CI_AI LIKE N'%'+Givname+'%')";
            //}

            //cmd.CommandText += $" AND dbo.CLNTPF$. COLLATE SQL_Latin1_General_CP1_CI_AI LIKE N'%PHUONG%'";

            /*Nghiệp vụ*/
            if (SearchViewModel.DanhSachNghiepVu != null) // Nếu chuỗi rỗng không so sánh
            {
                SearchArray(cmd, "[dbo].[RISKPF$].PREMCL", "PREMCL", SearchViewModel.DanhSachNghiepVu.PREMCL);
                SearchArray(cmd, "[dbo].[RISKPF$].RSKTYP", "RSKTYP", SearchViewModel.DanhSachNghiepVu.RSKTYP);
            }

            cmd.CommandText += @" 

GROUP BY
dbo.ZTRNPF$.CNTBRANCH ,
dbo.ZTRNPF$.BATCACTYR ,
dbo.DESCPF$.LONGDESC,
dbo.CHEXPF$.ZDEPTCD ,
dbo.ZTRNPF$.RLDGACCT ,
dbo.CLNTPF$.LSURNAME ,
dbo.CLNTPF$.LGIVNAME ,
dbo.ZTRNPF$.ACCNUM ,
dbo.AGNTPF$.AGTYPE01 ,
dbo.ZTRNPF$.ORIGCURR ,
dbo.ZTRNPF$.CCDATE ,
dbo.CHDRPF$.PAYPLAN

ORDER BY dbo.ZTRNPF$.RLDGACCT";

            //Para for numdisplay item
            cmd.Parameters.Add("numDisplayItem", SqlDbType.Int);

            //Nếu có quyền
            cmd.Parameters["numDisplayItem"].Value = numDisplayItem;

            //Nếu không có quyền
            cmd.Parameters["numDisplayItem"].Value = 0;

            return(Helper_DAO.getTable(cmd));
        }