code View

id 5
Title EVI-CS07 /Missed appointments over the last 15 days
Type evidenza
Highlight group filequery1003.cs, Evidenze
Description Appuntamenti saltati negli ultimi 15 giorni
Code
        var q_uvu = db.d_events
                    .AsNoTracking()
                    .Where(x => x.event_type.ToLower() == "app_verify" && x.date_apt_exe == null)
                    .Select(s => new { s.id_person, idApt = (string.IsNullOrEmpty(s.id_event) ? "" : "!") }).Distinct();

        DateTime nowminus15 = DateTime.Now.AddDays(-16);


        var _qAPT = db.d_events
                    .AsNoTracking()
                    .Where(w => (w.event_type != "APP_VERIFY" & w.event_type != "APP_FOOD_INT")
                     && w.date_apt > nowminus15.Date
                     && w.date_apt < DateTime.Today
                     && (w.event_status == "APE-003" | w.event_status == "APE-001")).Select(s => new
                     {
                         s.id_person,
                         s.date_apt
                     }).AsEnumerable();

        var qry = (from p in db.d_person
                   from q in q_uvu.Where(w => p.id_person == w.id_person).DefaultIfEmpty()
                   from c in _qAPT.Where(w => p.id_person == w.id_person)
                   where p.date_stopped == null
                   select new
                   {
                       p.id_person,
                       p.id_dream,
                       p.pe_surname,
                       p.pe_name,
                       p.pe_phone,
                       p.pe_sex,
                       p.pe_dob,
                       c.date_apt,
                       q.idApt
                   }).AsEnumerable().GroupBy(g => new
                   {
                       g.id_person,
                       g.id_dream,
                       g.pe_surname,
                       g.pe_name,
                       g.pe_sex,
                       g.pe_dob,
                       g.date_apt,
                       g.pe_phone,
                       g.idApt
                   })
                   .Select(s => new
                   {
                       s.Key.id_person,
                       s.Key.idApt,
                       s.Key.id_dream,
                       s.Key.pe_surname,
                       s.Key.pe_name,
                       s.Key.pe_phone,
                       s.Key.pe_sex,
                       _dataN = (s.Key.pe_dob.HasValue) ? s.Key.pe_dob.Value.ToShortDateString() : "",
                       _dataApt = (s.Key.date_apt.HasValue) ? s.Key.date_apt.Value.ToShortDateString() : "",
                       CountApt = s.Count(x => x.idApt == s.Key.idApt)
                   }).AsParallel().WithDegreeOfParallelism(2)
                       .Where(w => w.CountApt > 0);

        var distinctV = qry
            .GroupBy(o => o.id_person).Select(g => g.First());

        dt = distinctV.ToDataTable();
        dt.TableName = "lst_data";

 

Ordine