public IncidenceQueryResult Handle(IncidenceQuery query)
 {
     return(new IncidenceQueryResult(new Collection <Support.Entity.Incidencia>()));
 }
Beispiel #2
0
        public async Task <QueryResult <IncidenceViewModel> > GetIncidences(IncidenceQuery queryObj)
        {
            var result = new QueryResult <IncidenceViewModel>();
            var user   = await _userRepo.GetUser(_userRepo.GetLoggedInUserId());

            //only join to be able to serach incidence by area on server side. i.e use ia.Name rather than inc.Area.Name
            var query = (from inc in context.Incidences
                         .Include(x => x.Medias)
                         select new
            {
                Id = inc.Id,
                Code = inc.Code,
                Title = inc.Title,
                Description = inc.Description,
                Comment = inc.Comment,
                RouteCause = inc.RouteCause,
                AreaId = inc.AreaId,
                CityId = inc.CityId,
                StateId = inc.StateId,
                CountryId = inc.CountryId,
                ReportedIncidenceLatitude = inc.ReportedIncidenceLatitude,
                ReportedIncidenceLongitude = inc.ReportedIncidenceLongitude,
                Suggestion = inc.Suggestion,
                AssignerId = inc.AssignerId,
                AssignerName = inc.Assigner.FirstName + " " + inc.Assigner.LastName,
                AssigneeId = inc.AssigneeId,
                AssigneeName = inc.Assignee.FirstName + " " + inc.Assignee.LastName,
                AssigneeJobTitle = inc.Assignee.JobTitle,
                AssignedDepartmentId = inc.AssignedDepartmentId,
                AssignedDepartmentName = inc.AssignedDepartment.Name,
                AssignedOrganizationId = inc.AssignedOrganizationId,
                AssignedOrganizationName = inc.AssignedOrganization.CompanyName,
                ReporterName = inc.ReporterName,
                ReporterEmail = inc.ReporterEmail,
                ReporterFirstResponderAction = inc.ReporterFirstResponderAction,
                ReporterFeedbackRating = inc.ReporterFeedbackRating,
                ManagerFeedbackRating = inc.ManagerFeedbackRating,
                ReporterDepartmentId = inc.ReporterDepartmentId,
                IncidenceTypeId = inc.IncidenceTypeId,
                IncidenceTypeName = inc.IncidenceTypes.Name,
                IncidenceStatusId = inc.IncidenceStatusId,
                IncidenceStatusName = inc.IncidenceStatuses.Name,
                ResolutionDate = inc.ResolutionDate,
                AreaName = inc.Area.Name,
                CityName = inc.City.Name,
                StateName = inc.State.Name,
                CountryName = inc.Country.Name,
                OrganizationId = inc.OrganizationId,
                Deleted = inc.Deleted,
                DateCreated = inc.DateCreated,
                CreatedByUserId = inc.CreatedByUserId,
                DateEdited = inc.DateEdited,
                EditedByUserId = inc.EditedByUserId,
                pro = inc.Medias,
                Photos = (from ind in inc.Medias
                          where ind.FileUploadChannel == FileUploadChannels.incidencesReportedOnMobile && ind.IsVideo == false
                          select ind).Distinct().ToList(),
                Videos = (from ind in inc.Medias
                          where ind.FileUploadChannel == FileUploadChannels.incidencesReportedOnMobile && ind.IsVideo == true
                          select ind).Distinct().ToList()
            }).Where(x => user.UserName != "Admin" ? x.OrganizationId == user.OrganizationId && x.Deleted != true : x.Deleted != true)
                        .OrderByDescending(x => x.DateCreated)
                        .ToList().Select((s, index) => new IncidenceViewModel()
            {
                SerialNumber = index + 1,
                Id           = s.Id,
                Code         = s.Code,
                Title        = s.Title,
                Description  = s.Description,
                Comment      = s.Comment,
                RouteCause   = s.RouteCause,
                AreaId       = s.AreaId,
                CityId       = s.CityId,
                StateId      = s.StateId,
                CountryId    = s.CountryId,
                ReportedIncidenceLatitude  = s.ReportedIncidenceLatitude,
                ReportedIncidenceLongitude = s.ReportedIncidenceLongitude,
                Suggestion                   = s.Suggestion,
                AssignerId                   = s.AssignerId,
                AssignerName                 = s.AssignerName,
                AssigneeId                   = s.AssigneeId,
                AssigneeName                 = s.AssigneeName,
                AssigneeJobTitle             = s.AssigneeJobTitle,
                AssignedDepartmentId         = s.AssignedDepartmentId,
                AssignedDepartmentName       = s.AssignedDepartmentName,
                AssignedOrganizationId       = s.AssignedOrganizationId,
                AssignedOrganizationName     = s.AssignedOrganizationName,
                ReporterName                 = s.ReporterName,
                ReporterEmail                = s.ReporterEmail,
                ReporterFirstResponderAction = s.ReporterFirstResponderAction,
                ReporterFeedbackRating       = s.ReporterFeedbackRating,
                ManagerFeedbackRating        = s.ManagerFeedbackRating,
                ReporterDepartmentId         = s.ReporterDepartmentId,
                IncidenceTypeId              = s.IncidenceTypeId,
                IncidenceTypeName            = s.IncidenceTypeName,
                IncidenceStatusId            = s.IncidenceStatusId,
                IncidenceStatusName          = s.IncidenceStatusName,
                ResolutionDate               = s.ResolutionDate,
                AreaName        = s.AreaName,
                CityName        = s.CityName,
                StateName       = s.StateName,
                CountryName     = s.CountryName,
                DateCreated     = s.DateCreated,
                CreatedByUserId = s.CreatedByUserId,
                DateEdited      = s.DateEdited,
                EditedByUserId  = s.EditedByUserId,
                Photos          = s.Photos,
                Videos          = s.Videos
            })
                        .AsQueryable();

            if (queryObj.AreaId.HasValue)
            {
                query = query.Where(v => v.AreaId == queryObj.AreaId.Value);
            }

            if (queryObj.CityId.HasValue)
            {
                query = query.Where(v => v.CityId == queryObj.CityId.Value);
            }

            var columnsMap = new Dictionary <string, Expression <Func <IncidenceViewModel, object> > >()
            {
                ["area"]    = v => v.AreaName,
                ["city"]    = v => v.CityName,
                ["state"]   = v => v.StateName,
                ["Country"] = v => v.CountryName,
            };

            query = query.ApplyOrdering(queryObj, columnsMap);

            result.TotalItems = query.Count();

            //query = query.ApplyPaging(queryObj); handled on client

            result.Items = query.ToList();

            return(result);
        }