示例#1
0
        public CompanySearchFilterVm search(CompanySearchFilterVm input)
        {
            using (var db = new MainDb())
            {
                var query = db.companies
                            .Include(i => i.contactInfo)
                            .Include(c => c.companyCategoryLookupses)
                            .OrderByDescending(b => b.created)
                            .Where(e => (input.isActive == null || e.isActive == input.isActive) &&
                                   (e.companyName.Contains(input.keyword) || string.IsNullOrEmpty(input.keyword))
                                   );

                if (input.paging != null)
                {
                    input.paging.totalCount = query.Count();
                    query = query
                            .Skip(input.paging.skip)
                            .Take(input.paging.rowCount);
                }

                input.result = query.ToList <object>();

                return(input);
            }
        }
示例#2
0
        public CompanySearchFilterVm contactsByProvider(CompanySearchFilterVm input)
        {
            using (var db = new MainDb())
            {
                var query = db.companies
                            .Include(i => i.contactInfo)
                            .Include(c => c.companyCategoryLookupses)
                            .Include(k => k.companyCategoryLookupses.Select(v => v.companyCategoryType))
                            .Include(j => j.referralses.Select(m => m.surveyAnswerses))
                            .OrderByDescending(b => b.created)
                            .Where(e => (input.isActive == null || e.isActive == input.isActive) &&
                                   (e.companyName.Contains(input.keyword) || string.IsNullOrEmpty(input.keyword)) &&
                                   (e.companyCategoryLookupses.Any(b => b.companyCategoryTypeId == input.companyCategoryTypeId) || input.companyCategoryTypeId == null)
                                   );

                input.result = query.ToList <object>();
                if (input.result != null)
                {
                    var items = query.Select(i =>
                                             new
                    {
                        Id              = i.companyId,
                        CompanyName     = i.companyName,
                        FirstName       = i.contactInfo.firstName,
                        LastName        = i.contactInfo.lastName,
                        WorkPhone       = i.contactInfo.workPhone,
                        License         = i.license,
                        Bonded          = i.bonded,
                        AgreementSigned = SqlFunctions.DateName("day", i.agreementSigned).Trim() + "/" +
                                          SqlFunctions.StringConvert((double)i.agreementSigned.Value.Month).TrimStart() + "/" +
                                          SqlFunctions.DateName("year", i.agreementSigned),

                        //score_up = (i.referralses.Any(r => r.companyId == i.companyId)
                        //    ? i.referralses.Sum(x => x.surveyAnswerses.Sum(r => r.answer)) * 20
                        //    : null),
                        //score_dn = i.referralses.Sum(t => t.surveyAnswerses.Count()),

                        Score = (i.referralses.Any(r => r.companyId == i.companyId)
                                        ? (decimal?)i.referralses.Sum(x => x.surveyAnswerses.Sum(r => r.answer)) * 20 / i.referralses.Sum(t => t.surveyAnswerses.Count())
                                        : null),

                        ScoreCount = (i.referralses.Any(r => r.companyId == i.companyId)
                                        ? i.referralses.Where(e => e.surveyAnswerses.Any(b => b.referralId != null)).Count()
                                        : 0)
                    }).ToList <object>();

                    input.result = items;
                }

                return(input);
            }
        }
示例#3
0
        public void getAllOfGivenCategory2Test()
        {
            CompanySearchFilterVm a = new CompanySearchFilterVm();

            a.isActive = true;
            a.companyCategoryTypeId = 1; // dentists
            CompanySearchFilterVm b = companyManager.contactsByProvider(a);

            // examine input.result


            Assert.IsTrue(b.result.Count == 4);
        }
示例#4
0
        public FileResult Export(CompanySearchFilterVm input = null)
        {
            if (this.ModelState.IsValid)
            {
                input.paging = null;
                //input = companyManager.exportSearch(input);
                input = companyManager.contactsByProvider(input);
                var file = ImportExportHelper.exportToCsv(input.result, true);

                if (file != null)
                {
                    return(File(file.FullName, "Application/octet-stream", file.Name));
                }
                else
                {
                    this.Response.Write("<script> alert('No Data found based on the criteria!'); window.history.back(); </script>");
                }
            }

            return(null);
        }
示例#5
0
        public ActionResult Index(CompanySearchFilterVm input = null, Paging paging = null)
        {
            ViewBag.Title = "Providers";

            if (input == null)
            {
                input = new CompanySearchFilterVm();
            }
            input.paging = paging;

            if (this.ModelState.IsValid)
            {
                if (input.submitButton != null)
                {
                    input.paging.pageNumber = 1;
                }
                input = companyManager.search(input);
                return(View(input));
            }
            return(View(input));
        }
示例#6
0
        public CompanySearchFilterVm search(CompanySearchFilterVm input)
        {
            using (var db = new MainDb())
            {
                var query = db.companies
                            .Include(i => i.contactInfo)
                            .Include(s => s.referralses)
                            .Include("referralses.surveyAnswerses")
                            .Include(c => c.companyCategoryLookupses)
                            .Include(k => k.companyCategoryLookupses.Select(v => v.companyCategoryType))
                            .OrderByDescending(b => b.created)
                            .Where(e => (input.isActive == null || e.isActive == input.isActive) &&
                                   (e.companyName.Contains(input.keyword) || string.IsNullOrEmpty(input.keyword)) &&
                                   (e.companyCategoryLookupses.Any(b => b.companyCategoryTypeId == input.companyCategoryTypeId) || input.companyCategoryTypeId == null)
                                   );

                if (input.paging != null)
                {
                    input.paging.totalCount = query.Count();
                    query = query
                            .Skip(input.paging.skip)
                            .Take(input.paging.rowCount);
                }

                input.result = query
                               .ToList()
                               .Select(c =>
                {
                    var surveyAnswers = c.referralses.SelectMany(r => r.surveyAnswerses);
                    var score         = (surveyAnswers.Count(u => u.answer != null) == 0 ? null : (decimal?)surveyAnswers.Select(u => u.answer).Sum() / surveyAnswers.Count(u => u.answer != null)) * 20;
                    c.score           = (score != null) ? (decimal?)Math.Round(score.GetValueOrDefault(), 2) : null;
                    c.scoreCount      = surveyAnswers.Select(u => u.referralId).Distinct().Count();
                    return(c);
                })
                               .ToList <object>();

                return(input);
            }
        }