public async Task <IActionResult> AgentReport()
        {
            var model = new AgentReportGetViewModel();

            var lstUser = await _user.GetAgentListAsync();

            foreach (var item in lstUser)
            {
                var vm = new smallAgent();
                vm.ID   = item.Id;
                vm.Name = item.Name;

                model.Agent.Add(vm);
            }


            return(View(model));
        }
        public async Task <IActionResult> AgentReport(string ddlAgent, int ddlYear, int ddlMonth, int?From_InsuranceNumber, int?To_InsuranceNumber)
        {
            bool showError = false;

            //اگر شماره بیمه نامه وارد شده تا فیلتر اعمال شود باید "شماره بیمه نامه از " کوچکتر از "شماره بیمه نامه تا" باشد
            if (From_InsuranceNumber != null || To_InsuranceNumber != null)
            {
                if (From_InsuranceNumber > To_InsuranceNumber)
                {
                    ViewBag.pm = "شماره بیمه نامه برای فیلتر وارد شده باید صحیح وارد شود.از باید کوچکتر از تا باشد";
                    showError  = true;
                }

                else if (From_InsuranceNumber < 0 || To_InsuranceNumber < 0)
                {
                    ViewBag.pm = "شماره بیمه نامه نمی تواند عدد منفی باشد";
                    showError  = true;
                }

                else if (From_InsuranceNumber == null && To_InsuranceNumber != null)
                {
                    ViewBag.pm = "شماره بیمه نامه برای -از- حتما باید وارد شده باشد";
                    showError  = true;
                }

                //اگر ارور وجود داشت این ویو را برگردان و پیام را نشان بده در غیر این صورت ادامه کد ها را برو
                if (showError)
                {
                    var newmodel = new AgentReportGetViewModel();

                    var lstUser = await _user.GetAgentListAsync();

                    foreach (var item in lstUser)
                    {
                        var vm = new smallAgent();
                        vm.ID   = item.Id;
                        vm.Name = item.Name;

                        newmodel.Agent.Add(vm);
                    }


                    return(View(newmodel));
                }
            }
            //کد های بالا فقط جهت اعتبار سنجی شماره بیمه نامه های وارد شده است و نه چیز دیگر. کد های اصلی در ادامه نوشته شده است
            //------------------------------------------------------------------------------------

            var model = new List <ReportTableViewModel>();



            var lst = await _service.TblKarmozd.AgentReport(ddlAgent, ddlYear, ddlMonth);

            foreach (var item in lst)
            {
                //اگر شماره بیمه نامه -از- و یا -تا- وارد شده باشد یعنی میخواهیم اطلاعات را فیلتر کنیم پس این کد ها اجرا خواهند شد
                if (From_InsuranceNumber != null && To_InsuranceNumber != null)
                {
                    //چون هر دو وارد شده پس یک بازه مد نظر است
                    if (item.TblLifeInsurance.InsuranceNumber_Number >= From_InsuranceNumber && item.TblLifeInsurance.InsuranceNumber_Number <= To_InsuranceNumber)
                    {
                        var vm = new ReportTableViewModel();

                        vm.BimegozarName   = item.TblLifeInsurance.Bimegozar_Name;
                        vm.BimeshodeName   = item.TblLifeInsurance.Bimeshode_Name;
                        vm.InsuranceNumber = item.TblLifeInsurance.InsuranceNumber_Code + "/" + item.TblLifeInsurance.InsuranceNumber_CenterCode + "/" + item.TblLifeInsurance.InsuranceNumber_GarardadNumber + "/" + item.TblLifeInsurance.InsuranceNumber_Year + "/" + item.TblLifeInsurance.InsuranceNumber_Number;
                        vm.PaymentType     = item.TblLifeInsurance.PaymentType;
                        vm.Price           = item.TblLifeInsurance.Payment_Price;
                        vm.Serial          = item.TblLifeInsurance.Serial;
                        vm.SoodoorDate     = item.TblLifeInsurance.Date_Soodoor_Shamsi;
                        vm.Status          = item.TblLifeInsurance.Insurance_Status;
                        vm.Wage            = item.Price;

                        model.Add(vm);
                    }
                }
                else if (From_InsuranceNumber != null && To_InsuranceNumber == null)
                {
                    //یعنی از یک شکاره بیمه نامه به بعد را فیلتر کن
                    if (item.TblLifeInsurance.InsuranceNumber_Number >= From_InsuranceNumber)
                    {
                        var vm = new ReportTableViewModel();

                        vm.BimegozarName   = item.TblLifeInsurance.Bimegozar_Name;
                        vm.BimeshodeName   = item.TblLifeInsurance.Bimeshode_Name;
                        vm.InsuranceNumber = item.TblLifeInsurance.InsuranceNumber_Code + "/" + item.TblLifeInsurance.InsuranceNumber_CenterCode + "/" + item.TblLifeInsurance.InsuranceNumber_GarardadNumber + "/" + item.TblLifeInsurance.InsuranceNumber_Year + "/" + item.TblLifeInsurance.InsuranceNumber_Number;
                        vm.PaymentType     = item.TblLifeInsurance.PaymentType;
                        vm.Price           = item.TblLifeInsurance.Payment_Price;
                        vm.Serial          = item.TblLifeInsurance.Serial;
                        vm.SoodoorDate     = item.TblLifeInsurance.Date_Soodoor_Shamsi;
                        vm.Status          = item.TblLifeInsurance.Insurance_Status;
                        vm.Wage            = item.Price;

                        model.Add(vm);
                    }
                }
                else
                {
                    //اگر شماره بیمه نامه یرای فیلتر وارد نشده باشد یعنی تمامی اطلاعات را برای من نشان بده
                    var vm = new ReportTableViewModel();

                    vm.BimegozarName   = item.TblLifeInsurance.Bimegozar_Name;
                    vm.BimeshodeName   = item.TblLifeInsurance.Bimeshode_Name;
                    vm.InsuranceNumber = item.TblLifeInsurance.InsuranceNumber_Code + "/" + item.TblLifeInsurance.InsuranceNumber_CenterCode + "/" + item.TblLifeInsurance.InsuranceNumber_GarardadNumber + "/" + item.TblLifeInsurance.InsuranceNumber_Year + "/" + item.TblLifeInsurance.InsuranceNumber_Number;
                    vm.PaymentType     = item.TblLifeInsurance.PaymentType;
                    vm.Price           = item.TblLifeInsurance.Payment_Price;
                    vm.Serial          = item.TblLifeInsurance.Serial;
                    vm.SoodoorDate     = item.TblLifeInsurance.Date_Soodoor_Shamsi;
                    vm.Status          = item.TblLifeInsurance.Insurance_Status;
                    vm.Wage            = item.Price;

                    model.Add(vm);
                }

                //------------------------------------------------------------------
            }

            try
            {
                ViewBag.AgentName = lst.FirstOrDefault().TblUser.Name;
            }
            catch (Exception)
            { }

            ViewBag.Year  = ddlYear;
            ViewBag.Month = ddlMonth;

            return(View("AgentReportPrint", model));
        }