public ActionResult Create(HouseTaxViewModel model)
        {
            db.HouseTaxHistories.Add(model.HouseTax);
            var citizenHouse = db.CitizenHouses.First(c => c.Id == model.HouseTax.CitizenHouseId);

            db.SaveChanges();


            //Move to land calculations
            var citizenLand      = db.CitizenLands.First(c => c.CitizenId == citizenHouse.CitizenId);
            var landTaxViewModel = new LandTaxViewModel
            {
                CitizenLand    = db.CitizenLands.First(c => c.CitizenId == citizenHouse.CitizenId),
                LandTaxHistory = new LandTaxHistory
                {
                    CitizenId         = citizenHouse.CitizenId,
                    ValuationArea     = citizenLand.ValuationArea,
                    CitizenLandId     = citizenLand.Id,
                    HouseTaxHistoryId = model.HouseTax.Id
                },
                CitizenLands = db.CitizenLands.ToList(),
                Citizens     = db.Citizens.ToList()
            };

            return(View("~/Views/LandTax/LandTaxCalculationForm.cshtml", landTaxViewModel));
        }
        // GET: LandTax
        public ActionResult Index()
        {
            var landTaxHistories = db.LandTaxHistories.Include(c => c.CitizenLand).ToList();
            var landTaxViewModel = new LandTaxViewModel
            {
                LandTaxHistories = landTaxHistories
            };

            return(View(landTaxViewModel));
        }
        public ActionResult LandTax(int?CitizenId)
        {
            var citizenLand      = db.CitizenLands.First(c => c.CitizenId == CitizenId);
            var landTaxViewModel = new LandTaxViewModel
            {
                CitizenLand    = db.CitizenLands.First(c => c.CitizenId == CitizenId),
                LandTaxHistory = new LandTaxHistory {
                    CitizenId     = CitizenId,
                    ValuationArea = citizenLand.ValuationArea,
                    CitizenLandId = citizenLand.Id
                },
                CitizenLands = db.CitizenLands.ToList(),
                Citizens     = db.Citizens.ToList()
            };

            return(View("LandTaxCalculationForm", landTaxViewModel));
        }
        public ActionResult Save(LandTaxViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                var invalidViewModel = new LandTaxViewModel
                {
                    LandTaxHistory = viewModel.LandTaxHistory,
                };
                return(View("LandTaxCalculationForm", invalidViewModel));
            }


            if (viewModel.LandTaxHistory.Id == 0)
            {
                db.LandTaxHistories.Add(viewModel.LandTaxHistory);
            }
            db.SaveChanges();


            string ReportType = "pdf";

            LocalReport localReport = new LocalReport();

            localReport.ReportPath = Server.MapPath("~/Reports/TaxReport.rdlc");

            localReport.DataSources.Add(new ReportDataSource
            {
                Name  = "HouseTax",
                Value = db.HouseTaxHistories.Where(h => h.Id == viewModel.LandTaxHistory.HouseTaxHistoryId).ToList()
            });
            localReport.DataSources.Add(new ReportDataSource {
                Name = "LandTax", Value = db.LandTaxHistories.Where(l => l.Id == viewModel.LandTaxHistory.Id).ToList()
            });
            localReport.DataSources.Add(new ReportDataSource {
                Name = "Citizen", Value = db.Citizens.Where(c => c.CitizenId == viewModel.LandTaxHistory.CitizenId).ToList()
            });
            localReport.DataSources.Add(new ReportDataSource {
                Name = "Lands", Value = db.CitizenLands.Where(l => l.CitizenId == viewModel.LandTaxHistory.CitizenId).ToList()
            });
            localReport.DataSources.Add(new ReportDataSource {
                Name = "houses", Value = db.CitizenHouses.Where(l => l.CitizenId == viewModel.LandTaxHistory.CitizenId).ToList()
            });


            string reportType = ReportType;
            string mimeType;
            string encoding;
            string fileNameExtension;

            //if (ReportType == "Excel")
            //{
            //    fileNameExtension = "xlsx";
            //}
            //else if (ReportType == "PDF")
            //{
            //    fileNameExtension = "pdf";
            //}
            //else
            //{
            //    fileNameExtension = "docx";
            //}
            string[]  streams;
            Warning[] warnings;
            byte[]    renderByte;
            renderByte = localReport.Render(reportType, "", out mimeType, out encoding,
                                            out fileNameExtension, out streams, out warnings);
            Response.AddHeader("content-disposition", "attachment:filename= TaxReport." + fileNameExtension);
            return(File(renderByte, fileNameExtension));

            //return RedirectToAction("Index", "LandTax");
        }