public async Task <IActionResult> Details(int id) { var reports = new Samreq(); if (User.IsInRole("dataentry")) { reports = await _context.Samreq.SingleOrDefaultAsync(m => m.Rid == id && m.UserName == User.Identity.Name); } if (User.IsInRole("administrator")) { var user = await _userManager.FindByNameAsync(User.Identity.Name); IQueryable <Samreq> query = _context.Samreq.Where(m => m.Rid == id); if (user.TenantId != 1) { query = _context.Samreq.Where(m => m.Rid == id && m.Tenant.Equals(user.TenantId)); } reports = await query.SingleOrDefaultAsync(); } if (reports == null) { return(NotFound()); } return(View("samdetail", reports)); }
public async Task <IActionResult> Create([Bind("ProvCode,ImpCode,Year,Month,ReqYear,ReqMonth,ReqBy")] Samreq report) { if (ModelState.IsValid) { report.UserName = User.Identity.Name; var user = await _userManager.FindByNameAsync(User.Identity.Name); report.Tenant = user.TenantId; report.UpdateDate = DateTime.Now; int year, month; month = report.Month; year = report.Year; IQueryable <Nmr> item0 = _context.Nmr.Where(m => m.Year == year && (m.Month == month - 1 || m.Month == month - 2 || m.Month == month - 3)); IQueryable <TblOtp> item2 = _context.TblOtp.Where(m => m.Nmr.Year == year && (m.Nmr.Month == month - 1 || m.Nmr.Month == month - 2 || m.Nmr.Month == month - 3)); IQueryable <TblOtptfu> item3 = _context.TblOtptfu.Where(m => m.Nmr.Year == year && (m.Nmr.Month == month - 1 || m.Nmr.Month == month - 2 || m.Nmr.Month == month - 3)); if (month - 4 >= 0) { report.MonthFrom = (short)(month - 3); report.YearFrom = (short)(year); report.MonthTo = (short)(month - 1); report.YearTo = (short)(year); } if (month - 4 < 0) { switch (month - 4) { case -1: item0 = _context.Nmr.Where(m => (m.Year == year && (m.Month == 2 || m.Month == 1)) || (m.Year == year - 1 && m.Month == 12)); item2 = _context.TblOtp.Where(m => (m.Nmr.Year == year && (m.Nmr.Month == 2 || m.Nmr.Month == 1)) || (m.Nmr.Year == year - 1 && m.Nmr.Month == 12)); item3 = _context.TblOtptfu.Where(m => (m.Nmr.Year == year && (m.Nmr.Month == 2 || m.Nmr.Month == 1)) || (m.Nmr.Year == year - 1 && m.Nmr.Month == 12)); report.MonthFrom = (short)(12); report.YearFrom = (short)(year - 1); report.MonthTo = (short)(2); report.YearTo = (short)(year); break; case -2: item0 = _context.Nmr.Where(m => (m.Year == year && m.Month == 1) || (m.Year == year - 1 && (m.Month == 12 || m.Month == 11))); item2 = _context.TblOtp.Where(m => (m.Nmr.Year == year && m.Nmr.Month == 1) || (m.Nmr.Year == year - 1 && (m.Nmr.Month == 12 || m.Nmr.Month == 11))); item3 = _context.TblOtptfu.Where(m => (m.Nmr.Year == year && m.Nmr.Month == 1) || (m.Nmr.Year == year - 1 && (m.Nmr.Month == 12 || m.Nmr.Month == 11)));; report.MonthFrom = (short)(11); report.YearFrom = (short)(year - 1); report.MonthTo = (short)(1); report.YearTo = (short)(year); break; case -3: item0 = _context.Nmr.Where(m => m.Year == year - 1 && (m.Month == 12 || m.Month == 11 || m.Month == 10)); item2 = _context.TblOtp.Where(m => m.Nmr.Year == year - 1 && (m.Nmr.Month == 12 || m.Nmr.Month == 11 || m.Nmr.Month == 10)); item3 = _context.TblOtptfu.Where(m => m.Nmr.Year == year - 1 && (m.Nmr.Month == 12 || m.Nmr.Month == 11 || m.Nmr.Month == 10)); report.MonthFrom = (short)(10); report.YearFrom = (short)(year - 1); report.MonthTo = (short)(12); report.YearTo = (short)(year - 1); break; } } string[] prov = report.ProvCode.Split('-'); var nmrs = await item0 .Where(m => m.Implementer == report.ImpCode && m.Facility.DistNavigation.ProvCode == prov[1].Trim()) .Select(m => new { FacType = m.Facility.FacilityTypeNavigation.FacType, }).ToListAsync(); var opds = await item2 .Where(m => m.Nmr.Implementer == report.ImpCode && m.Nmr.Facility.DistNavigation.ProvCode == prov[1].Trim()) .Select(m => new SamreqVm() { FacType = m.Nmr.Facility.FacilityTypeNavigation.FacType, Muac115 = m.Muac115.GetValueOrDefault(), Z3score = m.Z3score.GetValueOrDefault(), Odema = m.Odema.GetValueOrDefault(), Fromsfp = m.Fromsfp.GetValueOrDefault(), Fromscotp = m.Fromscotp.GetValueOrDefault(), Defaultreturn = m.Defaultreturn.GetValueOrDefault(), AgeGroup = m.Otp.AgeGroup, }).ToListAsync(); var ipds = await item3 .Where(m => m.Nmr.Implementer == report.ImpCode && m.Nmr.Facility.DistNavigation.ProvCode == prov[1].Trim()) .Select(m => new SamreqVm() { FacType = m.Nmr.Facility.FacilityTypeNavigation.FacType, Muac115 = m.Muac115.GetValueOrDefault(), Z3score = m.Z3score.GetValueOrDefault(), Odema = m.Odema.GetValueOrDefault(), Defaultreturn = m.Defaultreturn.GetValueOrDefault(), Fromscotp = m.Fromscotp.GetValueOrDefault(), Fromsfp = m.Fromsfp.GetValueOrDefault(), AgeGroup = m.Otptfu.AgeGroup, }).ToListAsync(); if (nmrs.Any()) { report.Ph = (short)nmrs.Where(m => m.FacType.ToLower().Contains("h2")).Distinct().Count(); report.Dh = (short)nmrs.Where(m => m.FacType.ToLower().Contains("h3")).Distinct().Count(); report.Chc = (short)nmrs.Where(m => m.FacType.ToLower().Contains("chc")).Distinct().Count(); report.Shc = (short)nmrs.Where(m => m.FacType.ToLower().Contains("sch")).Distinct().Count(); report.Mht = (short)nmrs.Where(m => m.FacType.ToLower().Contains("mht")).Distinct().Count(); report.Bhc = (short)nmrs.Where(m => m.FacType.ToLower().Contains("bhc")).Distinct().Count(); } _context.Samreq.Add(report); await _context.SaveChangesAsync(); var items = _context.TlkpSstock.Where(m => m.IPDSAMZarib > 0 || m.OPDSAMZarib > 0).ToList(); if (items.Any()) { foreach (var item in items) { if (item.OPDSAMZarib > 0 && opds.Any()) { var row = new SamreqDetails(); row.SupplyId = item.SstockId; row.FormName = "OPD-SAM"; row.Rid = report.Rid; row.U6 = 0; row.O6 = opds.Sum(m => m.Muac115 + m.Z3score + m.Odema + m.Defaultreturn + m.Fromscotp + m.Fromsfp); row.UpdateDate = DateTime.Now; row.UserName = User.Identity.Name; _context.SamreqDetails.Add(row); } if (item.IPDSAMZarib > 0 && ipds.Any()) { var row = new SamreqDetails(); row.SupplyId = item.SstockId; row.FormName = "IPD-SAM"; row.Rid = report.Rid; row.UpdateDate = DateTime.Now; row.UserName = User.Identity.Name; row.U6 = ipds.Where(m => m.AgeGroup.ToLower().Contains("6 month")) .Sum(m => m.Muac115 + m.Odema + m.Z3score + m.Defaultreturn + m.Fromscotp + m.Fromsfp); row.O6 = ipds.Where(m => !m.AgeGroup.ToLower().Contains("6 month")) .Sum(m => m.Muac115 + m.Odema + m.Z3score + m.Defaultreturn + m.Fromscotp + m.Fromsfp); _context.SamreqDetails.Add(row); } } await _context.SaveChangesAsync(); } return(RedirectToAction("index")); } List <Provinces> Provinces = _context.Provinces.ToList(); foreach (var Province in Provinces) { Province.ProvName = Province.ProvName + "-" + Province.ProvCode; } ViewData["ProvList"] = new SelectList(Provinces, "ProvName", "ProvName"); var implementers = (from imp in _context.Implementers select imp).ToList(); ViewData["Implementers"] = new SelectList(implementers, "ImpCode", "ImpAcronym"); return(View(report)); }