public IQueryable<BaseDto> GetTL_EventLog(DateTime start, DateTime end, TABLE_SEQUENCE sequence, string institutionID, string uri)
        {
            if (sequence == TABLE_SEQUENCE.FILES_PPASS)
            {
                var entries = db.TL_EventLog
                    .Where(x => x.ProcessDatetime >= start &&
                           x.ProcessDatetime <= end &&
                           x.InstitutionID != null &&
                           x.ProgramID == PROGRAM_ID.PPASS &&
                           x.URIType == "sFTP")
                    .GroupBy(x => new { x.ProgramID, x.InstitutionID })
                    .Select(g => new FilesDto
                    {
                        ID = g.FirstOrDefault().ID,
                        DateStart = g.FirstOrDefault().ProcessDatetime,
                        OrganizationId = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select (int)n.OrganizationId).FirstOrDefault(),
                        NCSName = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                        NCSCustomerAssignedID = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.ShortName).FirstOrDefault(),

                        Program = g.Key.ProgramID,
                        InstitutionID = g.Key.InstitutionID,
                        Institution = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                        Category = g.FirstOrDefault().Category,
                        CategoryID = (from e in db.CategoryIDLists where e.CategoryName == g.FirstOrDefault().Category select e.CategoryID).FirstOrDefault(),
                        EventID = (int)g.FirstOrDefault().EventID,
                        Event = (from e in db.EventIDLists where e.EventID == g.FirstOrDefault().EventID select e.EventName).FirstOrDefault(),
                        Requests = g.Where(r => r.UniqueParticipantId != null).Count(),
                        Uri = g.FirstOrDefault().URI,
                        IufRequests = g.Where(r => r.RequestTxID != null && r.Category == CATEGORY_ID_FILES.IUF).Count(),
                        FufRequests = g.Where(r => r.RequestTxID != null && r.Category == CATEGORY_ID_FILES.FUF).Count(),
                        FcfRequests = g.Where(r => r.RequestTxID != null && r.Category == CATEGORY_ID_FILES.FCF).Count(),
                        IcfRequests = g.Where(r => r.RequestTxID != null && r.Category == CATEGORY_ID_FILES.ICF).Count(),
                        TotalErrors = g.Where(e => e.Level == EVENT_STATUS.ERROR).Count(),
                    });
                return entries;
            }
            else if (sequence == TABLE_SEQUENCE.FILES_UPASS)
            {
                var entries = db.TL_EventLog
                    .Where(x => x.ProcessDatetime >= start &&
                           x.ProcessDatetime <= end &&
                           x.InstitutionID != null &&
                           x.ProgramID == PROGRAM_ID.UPASS &&
                           x.URIType == "sFTP")
                    .GroupBy(x => new { x.ProgramID, x.InstitutionID })
                    .Select(g => new FilesDto
                    {
                        DateStart = g.FirstOrDefault().ProcessDatetime,
                        OrganizationId = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select (int)n.OrganizationId).FirstOrDefault(),
                        NCSName = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                        NCSCustomerAssignedID = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.ShortName).FirstOrDefault(),
                        Program = g.Key.ProgramID,
                        InstitutionID = g.Key.InstitutionID,
                        Institution = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                        Category = g.FirstOrDefault().Category,
                        CategoryID = (from e in db.CategoryIDLists where e.CategoryName == g.FirstOrDefault().Category select e.CategoryID).FirstOrDefault(),
                        EventID = (int)g.FirstOrDefault().EventID,
                        Event = (from e in db.EventIDLists where e.EventID == g.FirstOrDefault().EventID select e.EventName).FirstOrDefault(),
                        Requests = g.Where(r => r.UniqueParticipantId != null).Count(),
                        TotalErrors = g.Where(e => e.Level == EVENT_STATUS.ERROR).Count()
                    });
                return entries;
            }
            else if (sequence == TABLE_SEQUENCE.FILES_CURRENT_FILE_STREAM)
            {
                var entries = db.TL_EventLog
                    .Where(x => x.ProcessDatetime >= start &&
                           x.ProcessDatetime <= end &&
                           x.InstitutionID != null &&
                           (x.URI.ToUpper().Contains("IUF_") ||
                            x.URI.ToUpper().Contains("ICF_") ||
                            x.URI.ToUpper().Contains("FUF_") ||
                            x.URI.ToUpper().Contains("FCF_") ||
                            x.URI.Contains(PROGRAM_ID.UPASS)))
                    .GroupBy(x => new { x.ProgramID, x.InstitutionID, x.Category, x.EventID })
                    .Select(g => new FilesDto
                    {
                        ID = g.FirstOrDefault().ID,
                        DateStart = g.FirstOrDefault().ProcessDatetime,
                        OrganizationId = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select (int)n.OrganizationId).FirstOrDefault(),
                        NCSName = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                        NCSCustomerAssignedID = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.ShortName).FirstOrDefault(),
                        Program = g.Key.ProgramID,
                        InstitutionID = g.Key.InstitutionID,
                        Institution = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                        Category = g.Key.Category,
                        CategoryID = (from e in db.CategoryIDLists where e.CategoryName == g.FirstOrDefault().Category select e.CategoryID).FirstOrDefault(),
                        EventID = (int)g.Key.EventID,
                        Event = (from e in db.EventIDLists where e.EventID == g.FirstOrDefault().EventID select e.EventName).FirstOrDefault(),
                        Requests = g.Where(r => r.RequestTxID != null || r.UniqueParticipantId != null).Count(),
                        Uri = g.FirstOrDefault().URI,
                        RequestTxID = g.FirstOrDefault().RequestTxID,
                        UniqueParticipantId = g.FirstOrDefault().UniqueParticipantId,
                        Action = g.FirstOrDefault().Action,
                        ReasonCode = g.FirstOrDefault().ReasonCode,
                        TotalErrors = g.Where(e => e.Level == EVENT_STATUS.ERROR).Count(),
                        XmlData = g.FirstOrDefault().XmlData

                    });
                return entries;
            }

            else if (sequence == TABLE_SEQUENCE.CUBICWS_PPASS)
            {
                var entries = db.TL_EventLog
                    .Where(x => x.ProcessDatetime >= start &&
                           x.ProcessDatetime <= end &&
                           x.InstitutionID != null &&
                           x.ProgramID == PROGRAM_ID.PPASS &&
                           x.URIType == "API")
                    .GroupBy(x => new { x.ProgramID, x.InstitutionID })
                    .Select(g => new CubicwsDto
                    {
                        TaskID = g.FirstOrDefault().TaskID,
                        StateID = g.FirstOrDefault().StateID,
                        DateStart = g.FirstOrDefault().ProcessDatetime,
                        OrganizationId = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select (int)n.OrganizationId).FirstOrDefault(),
                        Program = g.Key.ProgramID,
                        InstitutionID = g.Key.InstitutionID,
                        Institution = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                        Category = g.FirstOrDefault().Category,
                        CategoryID = (from e in db.CategoryIDLists where e.CategoryName == g.FirstOrDefault().Category select e.CategoryID).FirstOrDefault(),
                        EventID = (int)g.FirstOrDefault().EventID,
                        Event = (from e in db.EventIDLists where e.EventID == g.FirstOrDefault().EventID select e.EventName).FirstOrDefault(),
                        CardSerialNumber = g.FirstOrDefault().CardSerialNumber,
                        NewCards = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.NEW_CARD).Count(),
                        TerminateCards = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.TERMINATE_CARD).Count(),
                        ReplacementCards = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.REPLACEMENT_CARD).Count(),
                        SuspendCards = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.SUSPEND_CARD).Count(),
                        ResumeCards = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.REPLACEMENT_CARD).Count(),
                        TotalErrors = g.Where(e => e.Level == EVENT_STATUS.ERROR || e.Level == EVENT_STATUS.WARNING).Count(),
                        Level = g.FirstOrDefault().Level,
                        ProcessErrorID = g.FirstOrDefault().ProcessErrorID,
                        XmlData = g.FirstOrDefault().XmlData
                    });
                return entries;
            }
            else if (sequence == TABLE_SEQUENCE.CUBICWS_UPASS)
            {
                var entries = db.TL_EventLog
                    .Where(x => x.ProcessDatetime >= start &&
                           x.ProcessDatetime <= end &&
                           //x.InstitutionID != null &&
                           x.ProgramID == PROGRAM_ID.UPASS &&
                   (x.URIType == "API" || x.URIType == "NoURI" || x.URIType == "Webservice"))
                    .GroupBy(x => new { x.ProgramID, x.InstitutionID })
                    .Select(g => new CubicwsDto
                    {
                        TaskID = g.FirstOrDefault().TaskID,
                        StateID = g.FirstOrDefault().StateID,
                        DateStart = g.FirstOrDefault().ProcessDatetime,
                        OrganizationId = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select (int)n.OrganizationId).FirstOrDefault(),
                        Program = g.Key.ProgramID,
                        InstitutionID = g.Key.InstitutionID,
                        Institution = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                        Category = g.FirstOrDefault().Category,
                        CategoryID = (from e in db.CategoryIDLists where e.CategoryName == g.FirstOrDefault().Category select e.CategoryID).FirstOrDefault(),
                        EventID = (int)g.FirstOrDefault().EventID,
                        Event = (from e in db.EventIDLists where e.EventID == g.FirstOrDefault().EventID select e.EventName).FirstOrDefault(),
                        WaiveBenefits = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.WAIVE_BENEFIT).Count(),
                        ElectBenefits = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.ELECT_BENEFIT).Count(),
                        LinkCards = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.LINK_CARD).Count(),
                        UnlinkCards = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.UNLINK_CARD).Count(),
                        UpassWebServices = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.WEB_SERVICES).Count(),
                        Others = g.Where(c => !(c.Category == CATEGORY_ID_WEBSERVICES.WAIVE_BENEFIT ||
                                                c.Category == CATEGORY_ID_WEBSERVICES.ELECT_BENEFIT ||
                                                c.Category == CATEGORY_ID_WEBSERVICES.LINK_CARD ||
                                                c.Category == CATEGORY_ID_WEBSERVICES.UNLINK_CARD ||
                                                c.Category == CATEGORY_ID_WEBSERVICES.WEB_SERVICES)).Count(),
                        TotalErrors = g.Where(e => e.Level == EVENT_STATUS.ERROR || e.Level == EVENT_STATUS.WARNING).Count(),
                        Level = g.FirstOrDefault().Level,
                        ProcessErrorID = g.FirstOrDefault().ProcessErrorID,
                        XmlData = g.FirstOrDefault().XmlData
                    });
                return entries;
            }
            else if (sequence == TABLE_SEQUENCE.CUBICWS_CURRENT_WEBSERVICE_STREAM)
            {
                var entries = db.TL_EventLog
                .Where(x => x.ProcessDatetime >= start &&
                       x.ProcessDatetime <= end &&
                       //x.InstitutionID != null &&
                       x.URIType != "sFTP")
                .GroupBy(x => new { x.ProgramID, x.InstitutionID, x.Category, x.GUID })
                .Select(g => new CubicwsDto
                {
                    ID = g.FirstOrDefault().ID,
                    TaskID = g.FirstOrDefault().TaskID,
                    StateID = g.FirstOrDefault().StateID,
                    DateStart = g.FirstOrDefault().ProcessDatetime,
                    OrganizationId = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select (int)n.OrganizationId).FirstOrDefault(),
                    NCSName = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                    Program = g.Key.ProgramID,
                    InstitutionID = g.Key.InstitutionID,
                    Institution = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                    Category = g.FirstOrDefault().Category,
                    CategoryID = (from e in db.CategoryIDLists where e.CategoryName == g.FirstOrDefault().Category select e.CategoryID).FirstOrDefault(),
                    EventID = (int)g.FirstOrDefault().EventID,
                    Event = (from e in db.EventIDLists where e.EventID == g.FirstOrDefault().EventID select e.EventName).FirstOrDefault(),
                    Events = g.Select(e => new Event_ID
                    {
                        ID = e.ID,
                        Event = (from ev in db.EventIDLists where ev.EventID == e.EventID select ev.EventName).FirstOrDefault(),
                        Level = e.Level,
                    }).ToList(),
                    GUID = g.Key.GUID,
                    TSID = g.FirstOrDefault().TSID,
                    UniqueParticipantId = g.FirstOrDefault().UniqueParticipantId,
                    Uri = g.FirstOrDefault().URI,
                    TotalErrors = g.Where(s => s.Level == EVENT_STATUS.ERROR || s.Level == EVENT_STATUS.WARNING).Count(),
                    Level = g.FirstOrDefault().Level,
                    ProcessErrorID = g.FirstOrDefault().ProcessErrorID,
                    EligDate = g.FirstOrDefault().EligDate,
                    Elig = g.FirstOrDefault().Elig,
                    Status = g.FirstOrDefault().Rval,
                    XmlData = g.FirstOrDefault().XmlData
                });
                return entries;
            }
            else if (sequence == TABLE_SEQUENCE.FILES_DETAIL)
            {
                var entries = db.TL_EventLog
                .Where(x => x.ProcessDatetime >= start &&
                       x.ProcessDatetime <= end &&
                       x.InstitutionID != null &&
                       x.InstitutionID == institutionID &&
                       x.URI.Contains(uri) &&
                       x.URIType == "sFTP")
                .GroupBy(x => new { x.RequestTxID, x.EventID })
                .Select(g => new FilesDto
                {
                    ID = g.FirstOrDefault().ID,
                    TaskID = g.FirstOrDefault().TaskID,
                    StateID = g.FirstOrDefault().StateID,
                    DateStart = g.FirstOrDefault().ProcessDatetime,
                    OrganizationId = (from n in db.NCSInfoes where n.InstitutionId == institutionID select (int)n.OrganizationId).FirstOrDefault(),
                    NCSName = (from n in db.NCSInfoes where n.InstitutionId == institutionID select n.Name).FirstOrDefault(),
                    NCSCustomerAssignedID = (from n in db.NCSInfoes where n.InstitutionId == institutionID select n.ShortName).FirstOrDefault(),
                    Program = g.FirstOrDefault().ProgramID,
                    InstitutionID = institutionID,
                    Institution = (from n in db.NCSInfoes where n.InstitutionId == institutionID select n.Name).FirstOrDefault(),
                    EventID = (int)g.Key.EventID,
                    Event = (from e in db.EventIDLists where e.EventID == g.Key.EventID select e.EventName).FirstOrDefault(),
                    Category = g.FirstOrDefault().Category,
                    CategoryID = (from e in db.CategoryIDLists where e.CategoryName == g.FirstOrDefault().Category select e.CategoryID).FirstOrDefault(),
                    Uri = g.FirstOrDefault().URI,
                    UniqueParticipantId = g.FirstOrDefault().UniqueParticipantId,
                    RequestTxID = g.Key.RequestTxID,
                    Action = g.FirstOrDefault().Action,
                    ReasonCode = g.FirstOrDefault().ReasonCode,
                    CardSerialNumber = g.FirstOrDefault().CardSerialNumber,
                    Errors = g.Where(e => e.Level == EVENT_STATUS.ERROR).Count(),
                    XmlData = g.FirstOrDefault().XmlData
                });

                return entries;
            }
            else
            {
                return null;
            }
        }
        public IQueryable <BaseDto> GetTL_EventLog(DateTime start, DateTime end, TABLE_SEQUENCE sequence, string institutionID, string uri)
        {
            if (sequence == TABLE_SEQUENCE.FILES_PPASS)
            {
                var entries = db.TL_EventLog
                              .Where(x => x.ProcessDatetime >= start &&
                                     x.ProcessDatetime <= end &&
                                     x.InstitutionID != null &&
                                     x.ProgramID == PROGRAM_ID.PPASS &&
                                     x.URIType == "sFTP")
                              .GroupBy(x => new { x.ProgramID, x.InstitutionID })
                              .Select(g => new FilesDto
                {
                    ID                    = g.FirstOrDefault().ID,
                    DateStart             = g.FirstOrDefault().ProcessDatetime,
                    OrganizationId        = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select(int) n.OrganizationId).FirstOrDefault(),
                    NCSName               = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                    NCSCustomerAssignedID = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.ShortName).FirstOrDefault(),

                    Program       = g.Key.ProgramID,
                    InstitutionID = g.Key.InstitutionID,
                    Institution   = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                    Category      = g.FirstOrDefault().Category,
                    CategoryID    = (from e in db.CategoryIDLists where e.CategoryName == g.FirstOrDefault().Category select e.CategoryID).FirstOrDefault(),
                    EventID       = (int)g.FirstOrDefault().EventID,
                    Event         = (from e in db.EventIDLists where e.EventID == g.FirstOrDefault().EventID select e.EventName).FirstOrDefault(),
                    Requests      = g.Where(r => r.UniqueParticipantId != null).Count(),
                    Uri           = g.FirstOrDefault().URI,
                    IufRequests   = g.Where(r => r.RequestTxID != null && r.Category == CATEGORY_ID_FILES.IUF).Count(),
                    FufRequests   = g.Where(r => r.RequestTxID != null && r.Category == CATEGORY_ID_FILES.FUF).Count(),
                    FcfRequests   = g.Where(r => r.RequestTxID != null && r.Category == CATEGORY_ID_FILES.FCF).Count(),
                    IcfRequests   = g.Where(r => r.RequestTxID != null && r.Category == CATEGORY_ID_FILES.ICF).Count(),
                    TotalErrors   = g.Where(e => e.Level == EVENT_STATUS.ERROR).Count(),
                });
                return(entries);
            }
            else if (sequence == TABLE_SEQUENCE.FILES_UPASS)
            {
                var entries = db.TL_EventLog
                              .Where(x => x.ProcessDatetime >= start &&
                                     x.ProcessDatetime <= end &&
                                     x.InstitutionID != null &&
                                     x.ProgramID == PROGRAM_ID.UPASS &&
                                     x.URIType == "sFTP")
                              .GroupBy(x => new { x.ProgramID, x.InstitutionID })
                              .Select(g => new FilesDto
                {
                    DateStart             = g.FirstOrDefault().ProcessDatetime,
                    OrganizationId        = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select(int) n.OrganizationId).FirstOrDefault(),
                    NCSName               = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                    NCSCustomerAssignedID = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.ShortName).FirstOrDefault(),
                    Program               = g.Key.ProgramID,
                    InstitutionID         = g.Key.InstitutionID,
                    Institution           = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                    Category              = g.FirstOrDefault().Category,
                    CategoryID            = (from e in db.CategoryIDLists where e.CategoryName == g.FirstOrDefault().Category select e.CategoryID).FirstOrDefault(),
                    EventID               = (int)g.FirstOrDefault().EventID,
                    Event       = (from e in db.EventIDLists where e.EventID == g.FirstOrDefault().EventID select e.EventName).FirstOrDefault(),
                    Requests    = g.Where(r => r.UniqueParticipantId != null).Count(),
                    TotalErrors = g.Where(e => e.Level == EVENT_STATUS.ERROR).Count()
                });
                return(entries);
            }
            else if (sequence == TABLE_SEQUENCE.FILES_CURRENT_FILE_STREAM)
            {
                var entries = db.TL_EventLog
                              .Where(x => x.ProcessDatetime >= start &&
                                     x.ProcessDatetime <= end &&
                                     x.InstitutionID != null &&
                                     (x.URI.ToUpper().Contains("IUF_") ||
                                      x.URI.ToUpper().Contains("ICF_") ||
                                      x.URI.ToUpper().Contains("FUF_") ||
                                      x.URI.ToUpper().Contains("FCF_") ||
                                      x.URI.Contains(PROGRAM_ID.UPASS)))
                              .GroupBy(x => new { x.ProgramID, x.InstitutionID, x.Category, x.EventID })
                              .Select(g => new FilesDto
                {
                    ID                    = g.FirstOrDefault().ID,
                    DateStart             = g.FirstOrDefault().ProcessDatetime,
                    OrganizationId        = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select(int) n.OrganizationId).FirstOrDefault(),
                    NCSName               = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                    NCSCustomerAssignedID = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.ShortName).FirstOrDefault(),
                    Program               = g.Key.ProgramID,
                    InstitutionID         = g.Key.InstitutionID,
                    Institution           = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                    Category              = g.Key.Category,
                    CategoryID            = (from e in db.CategoryIDLists where e.CategoryName == g.FirstOrDefault().Category select e.CategoryID).FirstOrDefault(),
                    EventID               = (int)g.Key.EventID,
                    Event                 = (from e in db.EventIDLists where e.EventID == g.FirstOrDefault().EventID select e.EventName).FirstOrDefault(),
                    Requests              = g.Where(r => r.RequestTxID != null || r.UniqueParticipantId != null).Count(),
                    Uri                   = g.FirstOrDefault().URI,
                    RequestTxID           = g.FirstOrDefault().RequestTxID,
                    UniqueParticipantId   = g.FirstOrDefault().UniqueParticipantId,
                    Action                = g.FirstOrDefault().Action,
                    ReasonCode            = g.FirstOrDefault().ReasonCode,
                    TotalErrors           = g.Where(e => e.Level == EVENT_STATUS.ERROR).Count(),
                    XmlData               = g.FirstOrDefault().XmlData
                });
                return(entries);
            }

            else if (sequence == TABLE_SEQUENCE.CUBICWS_PPASS)
            {
                var entries = db.TL_EventLog
                              .Where(x => x.ProcessDatetime >= start &&
                                     x.ProcessDatetime <= end &&
                                     x.InstitutionID != null &&
                                     x.ProgramID == PROGRAM_ID.PPASS &&
                                     x.URIType == "API")
                              .GroupBy(x => new { x.ProgramID, x.InstitutionID })
                              .Select(g => new CubicwsDto
                {
                    TaskID           = g.FirstOrDefault().TaskID,
                    StateID          = g.FirstOrDefault().StateID,
                    DateStart        = g.FirstOrDefault().ProcessDatetime,
                    OrganizationId   = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select(int) n.OrganizationId).FirstOrDefault(),
                    Program          = g.Key.ProgramID,
                    InstitutionID    = g.Key.InstitutionID,
                    Institution      = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                    Category         = g.FirstOrDefault().Category,
                    CategoryID       = (from e in db.CategoryIDLists where e.CategoryName == g.FirstOrDefault().Category select e.CategoryID).FirstOrDefault(),
                    EventID          = (int)g.FirstOrDefault().EventID,
                    Event            = (from e in db.EventIDLists where e.EventID == g.FirstOrDefault().EventID select e.EventName).FirstOrDefault(),
                    CardSerialNumber = g.FirstOrDefault().CardSerialNumber,
                    NewCards         = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.NEW_CARD).Count(),
                    TerminateCards   = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.TERMINATE_CARD).Count(),
                    ReplacementCards = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.REPLACEMENT_CARD).Count(),
                    SuspendCards     = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.SUSPEND_CARD).Count(),
                    ResumeCards      = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.REPLACEMENT_CARD).Count(),
                    TotalErrors      = g.Where(e => e.Level == EVENT_STATUS.ERROR || e.Level == EVENT_STATUS.WARNING).Count(),
                    Level            = g.FirstOrDefault().Level,
                    ProcessErrorID   = g.FirstOrDefault().ProcessErrorID,
                    XmlData          = g.FirstOrDefault().XmlData
                });
                return(entries);
            }
            else if (sequence == TABLE_SEQUENCE.CUBICWS_UPASS)
            {
                var entries = db.TL_EventLog
                              .Where(x => x.ProcessDatetime >= start &&
                                     x.ProcessDatetime <= end &&
                                     //x.InstitutionID != null &&
                                     x.ProgramID == PROGRAM_ID.UPASS &&
                                     (x.URIType == "API" || x.URIType == "NoURI" || x.URIType == "Webservice"))
                              .GroupBy(x => new { x.ProgramID, x.InstitutionID })
                              .Select(g => new CubicwsDto
                {
                    TaskID           = g.FirstOrDefault().TaskID,
                    StateID          = g.FirstOrDefault().StateID,
                    DateStart        = g.FirstOrDefault().ProcessDatetime,
                    OrganizationId   = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select(int) n.OrganizationId).FirstOrDefault(),
                    Program          = g.Key.ProgramID,
                    InstitutionID    = g.Key.InstitutionID,
                    Institution      = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                    Category         = g.FirstOrDefault().Category,
                    CategoryID       = (from e in db.CategoryIDLists where e.CategoryName == g.FirstOrDefault().Category select e.CategoryID).FirstOrDefault(),
                    EventID          = (int)g.FirstOrDefault().EventID,
                    Event            = (from e in db.EventIDLists where e.EventID == g.FirstOrDefault().EventID select e.EventName).FirstOrDefault(),
                    WaiveBenefits    = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.WAIVE_BENEFIT).Count(),
                    ElectBenefits    = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.ELECT_BENEFIT).Count(),
                    LinkCards        = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.LINK_CARD).Count(),
                    UnlinkCards      = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.UNLINK_CARD).Count(),
                    UpassWebServices = g.Where(c => c.Category == CATEGORY_ID_WEBSERVICES.WEB_SERVICES).Count(),
                    Others           = g.Where(c => !(c.Category == CATEGORY_ID_WEBSERVICES.WAIVE_BENEFIT ||
                                                      c.Category == CATEGORY_ID_WEBSERVICES.ELECT_BENEFIT ||
                                                      c.Category == CATEGORY_ID_WEBSERVICES.LINK_CARD ||
                                                      c.Category == CATEGORY_ID_WEBSERVICES.UNLINK_CARD ||
                                                      c.Category == CATEGORY_ID_WEBSERVICES.WEB_SERVICES)).Count(),
                    TotalErrors    = g.Where(e => e.Level == EVENT_STATUS.ERROR || e.Level == EVENT_STATUS.WARNING).Count(),
                    Level          = g.FirstOrDefault().Level,
                    ProcessErrorID = g.FirstOrDefault().ProcessErrorID,
                    XmlData        = g.FirstOrDefault().XmlData
                });
                return(entries);
            }
            else if (sequence == TABLE_SEQUENCE.CUBICWS_CURRENT_WEBSERVICE_STREAM)
            {
                var entries = db.TL_EventLog
                              .Where(x => x.ProcessDatetime >= start &&
                                     x.ProcessDatetime <= end &&
                                     //x.InstitutionID != null &&
                                     x.URIType != "sFTP")
                              .GroupBy(x => new { x.ProgramID, x.InstitutionID, x.Category, x.GUID })
                              .Select(g => new CubicwsDto
                {
                    ID             = g.FirstOrDefault().ID,
                    TaskID         = g.FirstOrDefault().TaskID,
                    StateID        = g.FirstOrDefault().StateID,
                    DateStart      = g.FirstOrDefault().ProcessDatetime,
                    OrganizationId = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select(int) n.OrganizationId).FirstOrDefault(),
                    NCSName        = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                    Program        = g.Key.ProgramID,
                    InstitutionID  = g.Key.InstitutionID,
                    Institution    = (from n in db.NCSInfoes where n.InstitutionId == g.Key.InstitutionID select n.Name).FirstOrDefault(),
                    Category       = g.FirstOrDefault().Category,
                    CategoryID     = (from e in db.CategoryIDLists where e.CategoryName == g.FirstOrDefault().Category select e.CategoryID).FirstOrDefault(),
                    EventID        = (int)g.FirstOrDefault().EventID,
                    Event          = (from e in db.EventIDLists where e.EventID == g.FirstOrDefault().EventID select e.EventName).FirstOrDefault(),
                    Events         = g.Select(e => new Event_ID
                    {
                        ID    = e.ID,
                        Event = (from ev in db.EventIDLists where ev.EventID == e.EventID select ev.EventName).FirstOrDefault(),
                        Level = e.Level,
                    }).ToList(),
                    GUID = g.Key.GUID,
                    TSID = g.FirstOrDefault().TSID,
                    UniqueParticipantId = g.FirstOrDefault().UniqueParticipantId,
                    Uri            = g.FirstOrDefault().URI,
                    TotalErrors    = g.Where(s => s.Level == EVENT_STATUS.ERROR || s.Level == EVENT_STATUS.WARNING).Count(),
                    Level          = g.FirstOrDefault().Level,
                    ProcessErrorID = g.FirstOrDefault().ProcessErrorID,
                    EligDate       = g.FirstOrDefault().EligDate,
                    Elig           = g.FirstOrDefault().Elig,
                    Status         = g.FirstOrDefault().Rval,
                    XmlData        = g.FirstOrDefault().XmlData
                });
                return(entries);
            }
            else if (sequence == TABLE_SEQUENCE.FILES_DETAIL)
            {
                var entries = db.TL_EventLog
                              .Where(x => x.ProcessDatetime >= start &&
                                     x.ProcessDatetime <= end &&
                                     x.InstitutionID != null &&
                                     x.InstitutionID == institutionID &&
                                     x.URI.Contains(uri) &&
                                     x.URIType == "sFTP")
                              .GroupBy(x => new { x.RequestTxID, x.EventID })
                              .Select(g => new FilesDto
                {
                    ID                    = g.FirstOrDefault().ID,
                    TaskID                = g.FirstOrDefault().TaskID,
                    StateID               = g.FirstOrDefault().StateID,
                    DateStart             = g.FirstOrDefault().ProcessDatetime,
                    OrganizationId        = (from n in db.NCSInfoes where n.InstitutionId == institutionID select(int) n.OrganizationId).FirstOrDefault(),
                    NCSName               = (from n in db.NCSInfoes where n.InstitutionId == institutionID select n.Name).FirstOrDefault(),
                    NCSCustomerAssignedID = (from n in db.NCSInfoes where n.InstitutionId == institutionID select n.ShortName).FirstOrDefault(),
                    Program               = g.FirstOrDefault().ProgramID,
                    InstitutionID         = institutionID,
                    Institution           = (from n in db.NCSInfoes where n.InstitutionId == institutionID select n.Name).FirstOrDefault(),
                    EventID               = (int)g.Key.EventID,
                    Event                 = (from e in db.EventIDLists where e.EventID == g.Key.EventID select e.EventName).FirstOrDefault(),
                    Category              = g.FirstOrDefault().Category,
                    CategoryID            = (from e in db.CategoryIDLists where e.CategoryName == g.FirstOrDefault().Category select e.CategoryID).FirstOrDefault(),
                    Uri                   = g.FirstOrDefault().URI,
                    UniqueParticipantId   = g.FirstOrDefault().UniqueParticipantId,
                    RequestTxID           = g.Key.RequestTxID,
                    Action                = g.FirstOrDefault().Action,
                    ReasonCode            = g.FirstOrDefault().ReasonCode,
                    CardSerialNumber      = g.FirstOrDefault().CardSerialNumber,
                    Errors                = g.Where(e => e.Level == EVENT_STATUS.ERROR).Count(),
                    XmlData               = g.FirstOrDefault().XmlData
                });

                return(entries);
            }
            else
            {
                return(null);
            }
        }