示例#1
0
        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));
        }
示例#2
0
        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));
        }