Ejemplo n.º 1
0
        public async Task <OperationDataResult <ItemsListsModel> > Index(ItemsListRequestModel pnRequestModel)
        {
            try
            {
                var listsModel = new ItemsListsModel();

                var itemListsQuery = _dbContext.ItemLists
                                     .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                     .AsQueryable();

                itemListsQuery =
                    QueryHelper.AddSortToQuery(itemListsQuery, pnRequestModel.Sort, pnRequestModel.IsSortDsc);

                if (!string.IsNullOrEmpty(pnRequestModel.NameFilter))
                {
                    itemListsQuery = itemListsQuery.Where(x => x.Name.Contains(pnRequestModel.NameFilter));
                }

                listsModel.Total = await itemListsQuery.Select(x => x.Id).CountAsync();

                itemListsQuery
                    = itemListsQuery
                      .Skip(pnRequestModel.Offset)
                      .Take(pnRequestModel.PageSize);

                listsModel.Lists = await itemListsQuery
                                   .Select(x => new ItemsListPnModel
                {
                    Id               = x.Id,
                    Name             = x.Name,
                    Description      = x.Description,
                    RepeatEvery      = x.RepeatEvery,
                    RepeatType       = x.RepeatType,
                    RepeatUntil      = x.RepeatUntil,
                    DayOfWeek        = x.DayOfWeek,
                    DayOfMonth       = x.DayOfMonth,
                    RelatedEFormId   = x.RelatedEFormId,
                    RelatedEFormName = x.RelatedEFormName,
                }).ToListAsync();

                return(new OperationDataResult <ItemsListsModel>(true, listsModel));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                return(new OperationDataResult <ItemsListsModel>(false,
                                                                 _itemsPlanningLocalizationService.GetString("ErrorObtainingLists")));
            }
        }
        public async Task <OperationDataResult <Paged <EmailRecipientModel> > > GetEmailRecipients(
            EmailRecipientsRequestModel requestModel)
        {
            try
            {
                var emailRecipientsModel = new Paged <EmailRecipientModel>();
                var emailRecipientsQuery = _dbContext.EmailRecipients
                                           .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                           .AsQueryable();

                emailRecipientsQuery = QueryHelper.AddSortToQuery(emailRecipientsQuery, requestModel.Sort, requestModel.IsSortDsc);

                // Tag ids
                if (requestModel.TagIds.Any())
                {
                    emailRecipientsQuery = emailRecipientsQuery
                                           .Where(x => x.TagRecipients
                                                  .Where(y => y.WorkflowState != Constants.WorkflowStates.Removed)
                                                  .Any(y => requestModel.TagIds.Contains(y.EmailTagId)));
                }

                emailRecipientsModel.Total = await emailRecipientsQuery.Select(x => x.Id).CountAsync();

                emailRecipientsQuery = emailRecipientsQuery
                                       .Skip(requestModel.Offset)
                                       .Take(requestModel.PageSize);

                var emailRecipientList = await AddSelectToEmailRecipientsQuery(emailRecipientsQuery)
                                         .ToListAsync();

                emailRecipientsModel.Entities = emailRecipientList;

                return(new OperationDataResult <Paged <EmailRecipientModel> >(
                           true,
                           emailRecipientsModel));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                _logger.LogError(e.Message);
                return(new OperationDataResult <Paged <EmailRecipientModel> >(false,
                                                                              _localizationService.GetString("ErrorWhileObtainingEmailRecipients")));
            }
        }
Ejemplo n.º 3
0
        public async Task <OperationDataResult <InnerResourcesModel> > Index(InnerResourceRequestModel requestModel)
        {
            try
            {
                var innerResourcesModel = new InnerResourcesModel();

                var query = _dbContext.InnerResources
                            .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                            .AsNoTracking()
                            .AsQueryable();

                query = QueryHelper.AddSortToQuery(query, requestModel.Sort, requestModel.IsSortDsc);

                innerResourcesModel.Total = await query.Select(x => x.Id).CountAsync();

                query = query
                        .Skip(requestModel.Offset)
                        .Take(requestModel.PageSize);

                innerResourcesModel.InnerResourceList = await query
                                                        .Select(x => new InnerResourceModel
                {
                    Name       = x.Name,
                    Id         = x.Id,
                    ExternalId = x.ExternalId,
                    RelatedOuterResourcesIds = _dbContext.OuterInnerResources.Where(y =>
                                                                                    y.InnerResourceId == x.Id && y.WorkflowState != Constants.WorkflowStates.Removed).Select(z => z.OuterResourceId).ToList()
                }).ToListAsync();

                innerResourcesModel.Name = _dbContext.PluginConfigurationValues
                                           .FirstOrDefault(x => x.Name == "OuterInnerResourceSettings:InnerResourceName")
                                           ?.Value;

                return(new OperationDataResult <InnerResourcesModel>(true, innerResourcesModel));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _logger.LogError(e.Message);
                return(new OperationDataResult <InnerResourcesModel>(false,
                                                                     _localizationService.GetString("ErrorObtainInnerResources")));
            }
        }
Ejemplo n.º 4
0
        public async Task <OperationDataResult <InstallationsModel> > Index(InstallationRequestModel pnRequestModel)
        {
            try
            {
                var installationsModel = new InstallationsModel();

                var installationsQuery = _dbContext.Installations
                                         .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                         .AsQueryable();

                if (!pnRequestModel.NameFilter.IsNullOrEmpty() && pnRequestModel.NameFilter != "")
                {
                    installationsQuery = installationsQuery.Where(x => x.Name.Contains(pnRequestModel.NameFilter));
                }

                QueryHelper.AddSortToQuery(installationsQuery, pnRequestModel.Sort, pnRequestModel.IsSortDsc);

                installationsModel.Total = installationsQuery.Count();

                installationsQuery
                    = installationsQuery
                      .Skip(pnRequestModel.Offset)
                      .Take(pnRequestModel.PageSize);

                var installations = await installationsQuery.Select(x => new InstallationModel
                {
                    Id   = x.Id,
                    Name = x.Name
                }).ToListAsync();

                installationsModel.InstallationList = installations;


                return(new OperationDataResult <InstallationsModel>(true, installationsModel));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _coreHelper.LogException(e.Message);
                return(new OperationDataResult <InstallationsModel>(false,
                                                                    _trashInspectionLocalizationService.GetString("ErrorObtainingInstallations")));
            }
        }
        public async Task <OperationDataResult <Paged <EntityGroup> > > Index(
            AdvEntitySelectableGroupListRequestModel requestModel)
        {
            try
            {
                var core = await _coreHelper.GetCore();

                var sdkDbContext = core.DbContextHelper.GetDbContext();

                var entityGroupList = new Paged <EntityGroup>();

                // get query
                var entitySelectableGroupQuery = sdkDbContext.EntityGroups
                                                 .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                                 .Where(x => x.Type == Constants.FieldTypes.EntitySelect)
                                                 .AsNoTracking()
                                                 .AsQueryable();

                if (!string.IsNullOrEmpty(requestModel.NameFilter))
                {
                    entitySelectableGroupQuery = entitySelectableGroupQuery
                                                 .Where(x => x.Name.Contains(requestModel.NameFilter));
                }

                // sort
                entitySelectableGroupQuery = QueryHelper.AddSortToQuery(entitySelectableGroupQuery, requestModel.Sort, requestModel.IsSortDsc);

                // count elements
                entityGroupList.Total = await entitySelectableGroupQuery.Select(x => x.Id).CountAsync();

                // pagination
                entitySelectableGroupQuery =
                    entitySelectableGroupQuery
                    .Skip(requestModel.Offset)
                    .Take(requestModel.PageSize);

                // select and take from db
                var entityGroups = await entitySelectableGroupQuery
                                   .Select(x => new EntityGroup
                {
                    Description        = x.Description,
                    WorkflowState      = x.WorkflowState,
                    CreatedAt          = x.CreatedAt,
                    Id                 = x.Id,
                    MicrotingUUID      = x.MicrotingUid,
                    Name               = x.Name,
                    Type               = x.Type,
                    UpdatedAt          = x.UpdatedAt,
                    EntityGroupItemLst = new List <EntityItem>(),
                }).ToListAsync();

                entityGroupList.Entities = entityGroups;

                var plugins = await _dbContext.EformPlugins.Select(x => x.PluginId).ToListAsync();

                foreach (var entityGroup in entityGroupList.Entities)
                {
                    foreach (var _ in plugins.Where(plugin => entityGroup.Name.Contains(plugin)))
                    {
                        entityGroup.IsLocked = true;
                    }
                }

                return(new OperationDataResult <Paged <EntityGroup> >(true, entityGroupList));
            }
            catch (Exception)
            {
                return(new OperationDataResult <Paged <EntityGroup> >(false,
                                                                      _localizationService.GetString("SelectableGroupLoadingFailed")));
            }
        }
Ejemplo n.º 6
0
        public async Task <OperationDataResult <ItemsListCasePnModel> > GetSingleList(ItemListCasesPnRequestModel requestModel)
        {
            try
            {
                var newItems = (_dbContext.Items.Where(item => item.ItemListId == requestModel.ListId)
                                .Join(_dbContext.ItemCases, item => item.Id, itemCase => itemCase.ItemId,
                                      (item, itemCase) => new
                {
                    itemCase.Id,
                    item.Name,
                    item.Description,
                    item.Type,
                    item.BuildYear,
                    item.ItemNumber,
                    itemCase.Comment,
                    itemCase.Location,
                    itemCase.FieldStatus,
                    itemCase.NumberOfImages,
                    itemCase.WorkflowState,
                    itemCase.CreatedAt,
                    itemCase.MicrotingSdkCaseId,
                    itemCase.MicrotingSdkeFormId,
                    itemCase.Status
                }));

                newItems
                    = newItems
                      .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed);

                newItems = QueryHelper.AddSortToQuery(newItems, requestModel.Sort, requestModel.IsSortDsc);

                var total = await newItems.Select(x => x.BuildYear).CountAsync();

                newItems
                    = newItems
                      .Skip(requestModel.Offset)
                      .Take(requestModel.PageSize);

                if (newItems.Any())
                {
                    var itemsListCasePnModel = new ItemsListCasePnModel
                    {
                        Items = await newItems.Select(x => new ItemsListPnItemCaseModel()
                        {
                            Id             = x.Id,
                            Date           = x.CreatedAt,
                            CreatedAt      = x.CreatedAt,
                            Name           = x.Name,
                            ItemNumber     = x.ItemNumber,
                            BuildYear      = x.BuildYear,
                            Description    = x.Description,
                            Type           = x.Type,
                            Comment        = x.Comment,
                            Location       = x.Location,
                            FieldStatus    = x.FieldStatus,
                            NumberOfImages = x.NumberOfImages,
                            SdkCaseId      = x.MicrotingSdkCaseId,
                            SdkeFormId     = x.MicrotingSdkeFormId,
                            Status         = x.Status
                        }).ToListAsync(),
                        Total = total,
                    };


                    return(new OperationDataResult <ItemsListCasePnModel>(
                               true,
                               itemsListCasePnModel));
                }
                else
                {
                    return(new OperationDataResult <ItemsListCasePnModel>(
                               false, ""));
                }
            }
            catch (Exception ex)
            {
                return(new OperationDataResult <ItemsListCasePnModel>(
                           false, ex.Message));
            }
        }
Ejemplo n.º 7
0
        private async Task <ItemListPnCaseResultListModel> GetTableData(ItemListCasesPnRequestModel requestModel)
        {
            var pluginConfigurationValue = _options.Value.Token;

            var itemList = await _dbContext.ItemLists
                           .SingleOrDefaultAsync(x => x.Id == requestModel.ListId);

            var core = await _core.GetCore();

            await using var microtingDbContext = core.DbContextHelper.GetDbContext();
            var locale = await _userService.GetCurrentUserLocale();

            var language  = microtingDbContext.Languages.Single(x => x.LanguageCode.ToLower() == locale.ToLower());
            var allFields = await core.Advanced_TemplateFieldReadAll(itemList.RelatedEFormId, language);

            // filter fields
            allFields = allFields.Where(x => x.FieldType != Constants.FieldTypes.SaveButton).ToList();

            var itemListPnCaseResultListModel = new ItemListPnCaseResultListModel
            {
                LabelEnabled          = itemList.LabelEnabled,
                DescriptionEnabled    = itemList.DescriptionEnabled,
                DeployedAtEnabled     = itemList.DeployedAtEnabled,
                DoneAtEnabled         = itemList.DoneAtEnabled,
                DoneByUserNameEnabled = itemList.DoneByUserNameEnabled,
                UploadedDataEnabled   = itemList.UploadedDataEnabled,
                ItemNumberEnabled     = itemList.ItemNumberEnabled,
                LocationCodeEnabled   = itemList.LocationCodeEnabled,
                BuildYearEnabled      = itemList.BuildYearEnabled,
                TypeEnabled           = itemList.TypeEnabled,
                NumberOfImagesEnabled = itemList.NumberOfImagesEnabled,
                SdkeFormId            = itemList.RelatedEFormId,
                FieldEnabled1         = itemList.SdkFieldEnabled1,
                FieldEnabled2         = itemList.SdkFieldEnabled2,
                FieldEnabled3         = itemList.SdkFieldEnabled3,
                FieldEnabled4         = itemList.SdkFieldEnabled4,
                FieldEnabled5         = itemList.SdkFieldEnabled5,
                FieldEnabled6         = itemList.SdkFieldEnabled6,
                FieldEnabled7         = itemList.SdkFieldEnabled7,
                FieldEnabled8         = itemList.SdkFieldEnabled8,
                FieldEnabled9         = itemList.SdkFieldEnabled9,
                FieldEnabled10        = itemList.SdkFieldEnabled10,
                FieldName1            = itemList.SdkFieldEnabled1 ? allFields.SingleOrDefault(x => x.Id == itemList.SdkFieldId1)?.Label : "",
                FieldName2            = itemList.SdkFieldEnabled2 ? allFields.SingleOrDefault(x => x.Id == itemList.SdkFieldId2)?.Label : "",
                FieldName3            = itemList.SdkFieldEnabled3 ? allFields.SingleOrDefault(x => x.Id == itemList.SdkFieldId3)?.Label : "",
                FieldName4            = itemList.SdkFieldEnabled4 ? allFields.SingleOrDefault(x => x.Id == itemList.SdkFieldId4)?.Label : "",
                FieldName5            = itemList.SdkFieldEnabled5 ? allFields.SingleOrDefault(x => x.Id == itemList.SdkFieldId5)?.Label : "",
                FieldName6            = itemList.SdkFieldEnabled6 ? allFields.SingleOrDefault(x => x.Id == itemList.SdkFieldId6)?.Label : "",
                FieldName7            = itemList.SdkFieldEnabled7 ? allFields.SingleOrDefault(x => x.Id == itemList.SdkFieldId7)?.Label : "",
                FieldName8            = itemList.SdkFieldEnabled8 ? allFields.SingleOrDefault(x => x.Id == itemList.SdkFieldId8)?.Label : "",
                FieldName9            = itemList.SdkFieldEnabled9 ? allFields.SingleOrDefault(x => x.Id == itemList.SdkFieldId9)?.Label : "",
                FieldName10           = itemList.SdkFieldEnabled10 ? allFields.SingleOrDefault(x => x.Id == itemList.SdkFieldId10)?.Label : "",
            };

            var newItems = _dbContext.Items
                           .Where(item => item.ItemListId == requestModel.ListId)
                           .Join(_dbContext.ItemCases, item => item.Id, itemCase => itemCase.ItemId,
                                 (item, itemCase) => new
            {
                itemCase.Id,
                item.Name,
                item.Description,
                item.BuildYear,
                item.LocationCode,
                item.ItemNumber,
                item.Type,
                itemCase.MicrotingSdkCaseDoneAt,
                itemCase.MicrotingSdkCaseId,
                itemCase.Status,
                itemCase.CreatedAt,
                itemCase.DoneByUserName,
                itemCase.SdkFieldValue1,
                itemCase.SdkFieldValue2,
                itemCase.SdkFieldValue3,
                itemCase.SdkFieldValue4,
                itemCase.SdkFieldValue5,
                itemCase.SdkFieldValue6,
                itemCase.SdkFieldValue7,
                itemCase.SdkFieldValue8,
                itemCase.SdkFieldValue9,
                itemCase.SdkFieldValue10,
                itemCase.WorkflowState,
                itemCase.NumberOfImages
            });

            if (requestModel.DateFrom != null)
            {
                newItems = newItems.Where(x =>
                                          x.CreatedAt >= new DateTime(requestModel.DateFrom.Value.Year, requestModel.DateFrom.Value.Month, requestModel.DateFrom.Value.Day, 0, 0, 0));
            }

            if (requestModel.DateTo != null)
            {
                newItems = newItems.Where(x =>
                                          x.CreatedAt <= new DateTime(requestModel.DateTo.Value.Year, requestModel.DateTo.Value.Month, requestModel.DateTo.Value.Day, 23, 59, 59));
            }

            // Add sort
            newItems = QueryHelper.AddSortToQuery(newItems, requestModel.Sort, requestModel.IsSortDsc);

            newItems = newItems
                       .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed);

            // Get total
            itemListPnCaseResultListModel.Total = await newItems.Select(x => x.Id).CountAsync();

            // Pagination
            newItems
                = newItems
                  .Skip(requestModel.Offset)
                  .Take(requestModel.PageSize);

            // add select and get from db
            itemListPnCaseResultListModel.Items = newItems
                                                  .Select(x => new ItemsListPnCaseResultModel
            {
                Id             = x.Id,
                DoneAt         = x.MicrotingSdkCaseDoneAt,
                DeployedAt     = x.CreatedAt,
                DoneByUserName = x.DoneByUserName,
                Label          = x.Name,
                Description    = x.Description,
                ItemNumber     = x.ItemNumber,
                LocationCode   = x.LocationCode,
                BuildYear      = x.BuildYear,
                Type           = x.Type,
                NumberOfImages = x.NumberOfImages,
                Field1         = x.SdkFieldValue1,
                Field2         = x.SdkFieldValue2,
                Field3         = x.SdkFieldValue3,
                Field4         = x.SdkFieldValue4,
                Field5         = x.SdkFieldValue5,
                Field6         = x.SdkFieldValue6,
                Field7         = x.SdkFieldValue7,
                Field8         = x.SdkFieldValue8,
                Field9         = x.SdkFieldValue9,
                Field10        = x.SdkFieldValue10,
                SdkCaseId      = x.MicrotingSdkCaseId,
                SdkeFormId     = itemList.RelatedEFormId,
                Status         = x.Status,
                Token          = pluginConfigurationValue,
            })
                                                  .ToList();

            return(itemListPnCaseResultListModel);
        }
Ejemplo n.º 8
0
        public async Task <OperationDataResult <Paged <InstallationModel> > > Index(InstallationsRequestModel requestModel)
        {
            try
            {
                var core = await _coreHelper.GetCore();

                var options   = _options.Value;
                var listModel = new Paged <InstallationModel>();

                var listQuery = _installationCheckingContext.Installations
                                .AsNoTracking()
                                .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed);

                if (requestModel.State != null)
                {
                    listQuery = listQuery.Where(x => x.State == requestModel.State);
                }

                if (requestModel.Type != null)
                {
                    listQuery = listQuery.Where(x => x.Type == requestModel.Type);
                }

                if (!string.IsNullOrWhiteSpace(requestModel.NameFilter))
                {
                    listQuery = listQuery.Where(x => x.CompanyName.Contains(requestModel.NameFilter));
                }

                listQuery = QueryHelper.AddSortToQuery(listQuery, requestModel.Sort, requestModel.IsSortDsc);

                listModel.Total = await listQuery.Select(x => x.Id).CountAsync();

                listQuery = listQuery
                            .Skip(requestModel.Offset)
                            .Take(requestModel.PageSize);


                var list = await AddSelectToQuery(listQuery).ToListAsync();

                foreach (var item in list.Where(x => x.InstallationEmployeeId != null))
                {
                    item.InstallationFormId = int.Parse(options.InstallationFormId);
                    if (item.Type == InstallationType.Installation)
                    {
                        var site = await core.SiteRead(item.InstallationEmployeeId.GetValueOrDefault());

                        item.AssignedTo = site.FirstName + " " + site.LastName;
                        if (item.InstallationSdkCaseId != null)
                        {
                            var sdkCaseId  = (int)item.InstallationSdkCaseId;
                            var caseLookup = await core.CaseLookupMUId(sdkCaseId);

                            if (caseLookup?.CheckUId != null && caseLookup.CheckUId != 0)
                            {
                                item.InstallationSdkCaseDbId = await core.CaseIdLookup(sdkCaseId, (int)caseLookup.CheckUId);
                            }
                        }
                    }
                }
                foreach (var item in list.Where(x => x.RemovalEmployeeId != null))
                {
                    item.InstallationFormId = int.Parse(options.InstallationFormId);
                    if (item.Type == InstallationType.Removal)
                    {
                        var site = await core.SiteRead(item.RemovalEmployeeId.GetValueOrDefault());

                        item.AssignedTo = site.FirstName + " " + site.LastName;
                        if (item.RemovalSdkCaseId != null)
                        {
                            var sdkCaseId  = (int)item.RemovalSdkCaseId;
                            var caseLookup = await core.CaseLookupMUId(sdkCaseId);

                            if (caseLookup?.CheckUId != null && caseLookup?.CheckUId != 0)
                            {
                                item.RemovalSdkCaseDbId = await core.CaseIdLookup(sdkCaseId, (int)caseLookup.CheckUId);
                            }
                        }
                        if (item.InstallationSdkCaseId != null)
                        {
                            var sdkCaseId  = (int)item.InstallationSdkCaseId;
                            var caseLookup = await core.CaseLookupMUId(sdkCaseId);

                            if (caseLookup?.CheckUId != null && caseLookup?.CheckUId != 0)
                            {
                                item.InstallationSdkCaseDbId = await core.CaseIdLookup(sdkCaseId, (int)caseLookup.CheckUId);
                            }
                        }
                    }
                }

                listModel.Entities = list;

                return(new OperationDataResult <Paged <InstallationModel> >(true, listModel));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                return(new OperationDataResult <Paged <InstallationModel> >(false, _localizationService.GetString("ErrorGettingInstallationsList")));
            }
        }
        public async Task <OperationDataResult <Paged <TrashInspectionModel> > > Index(TrashInspectionRequestModel pnRequestModel)
        {
            try
            {
                var trashInspectionSettings = _options.Value;

                var trashInspectionsQuery = _dbContext.TrashInspections
                                            .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                            .AsNoTracking()
                                            .AsQueryable();

                if (!string.IsNullOrEmpty(pnRequestModel.NameFilter))
                {
                    if (int.TryParse(pnRequestModel.NameFilter, out var i))
                    {
                        trashInspectionsQuery = trashInspectionsQuery.Where(x =>
                                                                            x.Id == i);
                    }
                    else
                    {
                        if (DateTime.TryParse(pnRequestModel.NameFilter, out var dateTime))
                        {
                            trashInspectionsQuery = trashInspectionsQuery.Where(x =>
                                                                                x.Date.Year == dateTime.Year &&
                                                                                x.Date.Month == dateTime.Month &&
                                                                                x.Date.Day == dateTime.Day);
                        }
                        else
                        {
                            trashInspectionsQuery = trashInspectionsQuery.Where(x =>
                                                                                x.Comment.Contains(pnRequestModel.NameFilter) ||
                                                                                x.WeighingNumber.Contains(pnRequestModel.NameFilter));
                        }
                    }
                }

                trashInspectionsQuery = QueryHelper.AddSortToQuery(trashInspectionsQuery, pnRequestModel.Sort, pnRequestModel.IsSortDsc);

                var total = await trashInspectionsQuery.Select(x => x.Id).CountAsync();

                trashInspectionsQuery = trashInspectionsQuery
                                        .Skip(pnRequestModel.Offset)
                                        .Take(pnRequestModel.PageSize);

                var timeZoneInfo = await _userService.GetCurrentUserTimeZoneInfo();

                var trashInspections = await AddSelectToQuery(trashInspectionsQuery, timeZoneInfo, trashInspectionSettings.Token)
                                       .ToListAsync();

                var core = await _coreHelper.GetCore();

                var eFormIds = new List <KeyValuePair <int, int> >(); // <FractionId, eFormId>

                foreach (var trashInspectionModel in trashInspections)
                {
                    var fractionEFormId = await _dbContext.Fractions
                                          .Where(y => y.Id == trashInspectionModel.FractionId)
                                          .Select(x => x.eFormId)
                                          .FirstOrDefaultAsync();

                    if (trashInspectionModel.Status == 100)
                    {
                        var result = await _dbContext.TrashInspectionCases
                                     .Where(x => x.TrashInspectionId == trashInspectionModel.Id)
                                     .Where(x => x.Status == 100)
                                     .ToListAsync();

                        if (result.Any())
                        {
                            trashInspectionModel.SdkCaseId = int.Parse(result.First().SdkCaseId);

                            trashInspectionModel.SdkCaseId =
                                (int)core.CaseLookupMUId(trashInspectionModel.SdkCaseId).Result.CaseId;
                        }

                        if (eFormIds.Any(x => x.Key == trashInspectionModel.FractionId))
                        {
                            trashInspectionModel.SdkeFormId = eFormIds.First(x => x.Key == trashInspectionModel.FractionId).Value;
                        }
                        else
                        {
                            try
                            {
                                var locale = await _userService.GetCurrentUserLocale();

                                var language = core.DbContextHelper.GetDbContext().
                                               Languages
                                               .Single(x => x.LanguageCode == locale);
                                var eForm = await core.TemplateItemRead(fractionEFormId, language);

                                trashInspectionModel.SdkeFormId = eForm.Id;
                                var kvp =
                                    new KeyValuePair <int, int>(fractionEFormId, eForm.Id);
                                eFormIds.Add(kvp);
                            }
                            catch
                            {
                                // KeyValuePair<int, int> kvp = new KeyValuePair<int, int>(fraction.eFormId, "");
                                // eFormIds.Add(kvp);
                            }
                        }
                    }
                }

                var trashInspectionsModel = new Paged <TrashInspectionModel>
                {
                    Total    = total,
                    Entities = trashInspections
                };


                return(new OperationDataResult <Paged <TrashInspectionModel> >(true, trashInspectionsModel));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _logger.LogError(e.Message);
                return(new OperationDataResult <Paged <TrashInspectionModel> >(false,
                                                                               _trashInspectionLocalizationService.GetString("ErrorObtainingTrashInspections")));
            }
        }
Ejemplo n.º 10
0
        public async Task <OperationDataResult <Paged <FractionModel> > > Index(FractionRequestModel pnRequestModel)
        {
            try
            {
                var fractionsModel = new Paged <FractionModel>();

                var fractionsQuery = _dbContext.Fractions
                                     .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                     .AsQueryable();
                //if (!pnRequestModel.NameFilter.IsNullOrEmpty() && pnRequestModel.NameFilter != "")
                //{
                //    fractionsQuery = fractionsQuery.Where(x =>
                //        x.Name.Contains(pnRequestModel.NameFilter) ||
                //        x.Description.Contains(pnRequestModel.NameFilter));
                //}

                fractionsQuery = QueryHelper.AddSortToQuery(fractionsQuery, pnRequestModel.Sort, pnRequestModel.IsSortDsc);

                fractionsModel.Total = await fractionsQuery.Select(x => x.Id).CountAsync();

                fractionsQuery
                    = fractionsQuery
                      .Skip(pnRequestModel.Offset)
                      .Take(pnRequestModel.PageSize);

                var fractions = await fractionsQuery
                                .Select(x => new FractionModel
                {
                    Id           = x.Id,
                    Name         = x.Name,
                    eFormId      = x.eFormId,
                    Description  = x.Description,
                    LocationCode = x.LocationCode,
                    ItemNumber   = x.ItemNumber
                })
                                .ToListAsync();

                fractionsModel.Entities = fractions;
                var core = await _coreHelper.GetCore();

                var eFormNames = new List <KeyValuePair <int, string> >();

                var locale = await _userService.GetCurrentUserLocale();

                var language = core.DbContextHelper.GetDbContext().Languages.Single(x => x.LanguageCode == locale);
                foreach (var fractionModel in fractionsModel.Entities)
                {
                    if (fractionModel.eFormId > 0)
                    {
                        if (eFormNames.Any(x => x.Key == fractionModel.eFormId))
                        {
                            fractionModel.SelectedTemplateName = eFormNames.First(x => x.Key == fractionModel.eFormId).Value;
                        }
                        else
                        {
                            try
                            {
                                var eFormName = core.TemplateItemRead(fractionModel.eFormId, language).Result.Label;
                                fractionModel.SelectedTemplateName = eFormName;
                                var kvp =
                                    new KeyValuePair <int, string>(fractionModel.eFormId, eFormName);
                                eFormNames.Add(kvp);
                            }
                            catch
                            {
                                var kvp = new KeyValuePair <int, string>(fractionModel.eFormId, "");
                                eFormNames.Add(kvp);
                            }
                        }
                    }
                }

                return(new OperationDataResult <Paged <FractionModel> >(true, fractionsModel));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _coreHelper.LogException(e.Message);
                return(new OperationDataResult <Paged <FractionModel> >(false,
                                                                        _trashInspectionLocalizationService.GetString("ErrorObtainingFractions")));
            }
        }
Ejemplo n.º 11
0
        public async Task <OperationDataResult <Paged <StatByYearModel> > > GetFractionsStatsByYear(FractionPnYearRequestModel pnRequestModel)
        {
            try
            {
                var trashInspectionsQuery = _dbContext.TrashInspections
                                            .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                            .Where(x => x.Date.Year == pnRequestModel.Year)
                                            .AsQueryable();

                var fractionsStatsByYearModel = new Paged <StatByYearModel>();

                var fractionQuery = _dbContext.Fractions
                                    .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                    .AsQueryable();

                //if (!pnRequestModel.NameFilter.IsNullOrEmpty() && pnRequestModel.NameFilter != "")
                //{
                //    fractionQuery = fractionQuery.Where(x =>
                //        x.Name.Contains(pnRequestModel.NameFilter) ||
                //        x.Description.Contains(pnRequestModel.NameFilter));
                //}

                var exludeSort = new List <string>
                {
                    "Weighings",
                    "ControlPercentage",
                    "AmountOfWeighingsControlled",
                    "ApprovedPercentage",
                    "NotApprovedPercentage",
                    "ConditionalApprovedPercentage"
                };
                fractionQuery = QueryHelper.AddSortToQuery(fractionQuery, pnRequestModel.Sort, pnRequestModel.IsSortDsc, exludeSort);

                fractionsStatsByYearModel.Total = await fractionQuery.Select(x => x.Id).CountAsync();

                var fractionsStatsByYear = await fractionQuery
                                           .Select(x => new StatByYearModel
                {
                    Id                            = x.Id,
                    Name                          = x.Name,
                    Weighings                     = trashInspectionsQuery.Count(t => t.FractionId == x.Id),
                    ControlPercentage             = 0,
                    AmountOfWeighingsControlled   = trashInspectionsQuery.Count(t => t.FractionId == x.Id && t.Status == 100),
                    ApprovedPercentage            = trashInspectionsQuery.Count(t => t.FractionId == x.Id && t.IsApproved && t.Status == 100),
                    NotApprovedPercentage         = trashInspectionsQuery.Count(t => t.FractionId == x.Id && t.ApprovedValue == "3" && t.Status == 100),
                    ConditionalApprovedPercentage = trashInspectionsQuery.Count(t => t.FractionId == x.Id && t.ApprovedValue == "2" && t.Status == 100)
                })
                                           .ToListAsync();

                foreach (var statByYearModel in fractionsStatsByYear)
                {
                    if (statByYearModel.Weighings > 0)
                    {
                        statByYearModel.ControlPercentage = Math.Round((statByYearModel.AmountOfWeighingsControlled / statByYearModel.Weighings) * 100, 1);
                    }

                    if (statByYearModel.ApprovedPercentage > 0 && statByYearModel.AmountOfWeighingsControlled > 0)
                    {
                        statByYearModel.ApprovedPercentage =
                            Math.Round((statByYearModel.ApprovedPercentage / statByYearModel.AmountOfWeighingsControlled) * 100, 1);
                    }
                    else
                    {
                        statByYearModel.ApprovedPercentage = 0;
                    }

                    if (statByYearModel.ConditionalApprovedPercentage > 0 && statByYearModel.AmountOfWeighingsControlled > 0)
                    {
                        statByYearModel.ConditionalApprovedPercentage =
                            Math.Round((statByYearModel.ConditionalApprovedPercentage / statByYearModel.AmountOfWeighingsControlled) * 100, 1);
                    }
                    else
                    {
                        statByYearModel.ConditionalApprovedPercentage = 0;
                    }

                    if (statByYearModel.NotApprovedPercentage > 0 && statByYearModel.AmountOfWeighingsControlled > 0)
                    {
                        statByYearModel.NotApprovedPercentage =
                            Math.Round((statByYearModel.NotApprovedPercentage / statByYearModel.AmountOfWeighingsControlled) * 100, 1);
                    }
                    else
                    {
                        statByYearModel.NotApprovedPercentage = 0;
                    }
                }

                if (!string.IsNullOrEmpty(pnRequestModel.Sort) && exludeSort.Contains(pnRequestModel.Sort))
                {
                    fractionsStatsByYear = pnRequestModel.IsSortDsc
                        ? fractionsStatsByYear.OrderByDescending(x => x.GetPropValue(pnRequestModel.Sort)).ToList()
                        : fractionsStatsByYear.OrderBy(x => x.GetPropValue(pnRequestModel.Sort)).ToList();
                }

                fractionsStatsByYearModel.Entities = fractionsStatsByYear;

                return(new OperationDataResult <Paged <StatByYearModel> >(true, fractionsStatsByYearModel));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _coreHelper.LogException(e.Message);
                return(new OperationDataResult <Paged <StatByYearModel> >(false,
                                                                          _trashInspectionLocalizationService.GetString("ErrorObtainingFractions")));
            }
        }
Ejemplo n.º 12
0
        public async Task <OperationDataResult <Paged <ItemGroupModel> > > GetItemGroups(ItemGroupRequestModel itemGroupRequestModel)
        {
            try
            {
                var inventoryItemGroupQuery = _dbContext.ItemGroups
                                              .AsQueryable();

                // sort
                var excludeSort = new List <string> {
                    "ParentGroup"
                };
                inventoryItemGroupQuery = QueryHelper.AddSortToQuery(inventoryItemGroupQuery,
                                                                     itemGroupRequestModel.Sort, itemGroupRequestModel.IsSortDsc, excludeSort);

                // filter by name
                if (!string.IsNullOrEmpty(itemGroupRequestModel.NameFilter))
                {
                    inventoryItemGroupQuery = inventoryItemGroupQuery
                                              .Where(x => x.Name.Contains(itemGroupRequestModel.NameFilter));
                }

                inventoryItemGroupQuery = inventoryItemGroupQuery
                                          .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed);

                // calculate total before pagination
                var total = await inventoryItemGroupQuery.Select(x => x.Id).CountAsync();

                var inventoryItemGroupQueryMapped = AddSelectToItemGroupQuery(inventoryItemGroupQuery);

                if (itemGroupRequestModel.Sort == "ParentGroup")
                {
                    if (itemGroupRequestModel.IsSortDsc)
                    {
                        inventoryItemGroupQueryMapped = inventoryItemGroupQueryMapped
                                                        .OrderByDescending(x => x.Parent.Name);
                    }
                    else
                    {
                        inventoryItemGroupQueryMapped = inventoryItemGroupQueryMapped
                                                        .OrderBy(x => x.Parent.Name);
                    }
                }

                // pagination
                inventoryItemGroupQueryMapped
                    = inventoryItemGroupQueryMapped
                      .Skip(itemGroupRequestModel.Offset)
                      .Take(itemGroupRequestModel.PageSize);

                // add select and take objects from db
                var inventoryItemGroupsFromDb = await inventoryItemGroupQueryMapped.ToListAsync();

                var returnValue = new Paged <ItemGroupModel>
                {
                    Entities = inventoryItemGroupsFromDb,
                    Total    = total,
                };

                return(new OperationDataResult <Paged <ItemGroupModel> >(true, returnValue));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                return(new OperationDataResult <Paged <ItemGroupModel> >(false,
                                                                         _inventoryLocalizationService.GetString("ErrorObtainingItemGroups")));
            }
        }
        public async Task <OperationDataResult <Paged <ItemTypeSimpleModel> > > GetItemTypes(
            ItemTypeRequest itemTypeRequest)
        {
            try
            {
                var inventoryItemTypeQuery = _dbContext.ItemTypes
                                             .AsQueryable();

                // filter by name
                if (!string.IsNullOrEmpty(itemTypeRequest.NameFilter))
                {
                    inventoryItemTypeQuery = inventoryItemTypeQuery
                                             .Where(x => x.Name.Contains(itemTypeRequest.NameFilter));
                }

                // filter by tags
                if (itemTypeRequest.TagIds.Any())
                {
                    foreach (var tagId in itemTypeRequest.TagIds)
                    {
                        inventoryItemTypeQuery = inventoryItemTypeQuery
                                                 .Where(x => x.ItemTypeTags
                                                        .Where(y => y.WorkflowState != Constants.WorkflowStates.Removed)
                                                        .Any(y => y.InventoryTagId == tagId));
                    }
                }

                inventoryItemTypeQuery = inventoryItemTypeQuery
                                         .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed);

                // calculate total before pagination
                var total = await inventoryItemTypeQuery.Select(x => x.Id).CountAsync();

                // pagination
                inventoryItemTypeQuery
                    = inventoryItemTypeQuery
                      .Skip(itemTypeRequest.Offset)
                      .Take(itemTypeRequest.PageSize);

                // get userIds for get full name users
                var fullNamesUserWithId = new List <KeyValuePair <int, string> >();
                foreach (var userId in inventoryItemTypeQuery.Select(x => x.CreatedByUserId).Distinct())
                {
                    // get full names users
                    fullNamesUserWithId.Add(new KeyValuePair <int, string>(userId, await _userService.GetFullNameUserByUserIdAsync(userId)));
                }

                // add select
                var inventoryItemTypeMappedQuery = AddSelectToItemTypeQuery(inventoryItemTypeQuery);

                // sort
                inventoryItemTypeMappedQuery = QueryHelper.AddSortToQuery(inventoryItemTypeMappedQuery, itemTypeRequest.Sort,
                                                                          itemTypeRequest.IsSortDsc);

                // take objects from db
                var inventoryItemTypeFromDb = await inventoryItemTypeMappedQuery.ToListAsync();

                foreach (var(userId, fullNameUser) in fullNamesUserWithId)
                {
                    foreach (var itemTypeSimpleModel in inventoryItemTypeFromDb.Where(x => x.CreatedByUserId == userId))
                    {
                        itemTypeSimpleModel.CreatedBy = fullNameUser;
                    }
                }

                var returnValue = new Paged <ItemTypeSimpleModel>
                {
                    Entities = inventoryItemTypeFromDb,
                    Total    = total,
                };

                return(new OperationDataResult <Paged <ItemTypeSimpleModel> >(true, returnValue));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                return(new OperationDataResult <Paged <ItemTypeSimpleModel> >(false,
                                                                              _inventoryLocalizationService.GetString("ErrorObtainingLists")));
            }
        }
        public async Task <OperationDataResult <CustomersModel> > Index(
            CustomersRequestModel pnRequestModel)
        {
            try
            {
                // CustomerModel customerModel = new CustomerModel();
                var customersQuery = _dbContext.Customers
                                     .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                     .AsQueryable();

                customersQuery = QueryHelper.AddSortToQuery(customersQuery, pnRequestModel.SortColumnName,
                                                            pnRequestModel.IsSortDsc);

                if (!string.IsNullOrEmpty(pnRequestModel.Name))
                {
                    customersQuery = customersQuery.Where(x =>
                                                          x.CompanyName.ToLower().Contains(pnRequestModel.Name.ToLower()) ||
                                                          x.ContactPerson.ToLower().Contains(pnRequestModel.Name.ToLower()) ||
                                                          x.CompanyAddress.ToLower().Contains(pnRequestModel.Name.ToLower()) ||
                                                          x.CompanyAddress2.ToLower().Contains(pnRequestModel.Name.ToLower()) ||
                                                          x.CityName.ToLower().Contains(pnRequestModel.Name.ToLower()) ||
                                                          x.Phone.Contains(pnRequestModel.Name) ||
                                                          x.VatNumber.Contains(pnRequestModel.Name) ||
                                                          x.EanCode.Contains(pnRequestModel.Name) ||
                                                          x.Email.ToLower().Contains(pnRequestModel.Name.ToLower()));
                }

                customersQuery = customersQuery
                                 .Skip(pnRequestModel.Offset)
                                 .Take(pnRequestModel.PageSize);

                var customers = await customersQuery.Select(x => new CustomerModel
                {
                    Id                    = x.Id,
                    Description           = x.Description,
                    Email                 = x.Email,
                    ContactPerson         = x.ContactPerson,
                    CompanyName           = x.CompanyName,
                    Phone                 = x.Phone,
                    CityName              = x.CityName,
                    CompanyAddress        = x.CompanyAddress,
                    CompanyAddress2       = x.CompanyAddress2,
                    CountryCode           = x.CountryCode,
                    CreatedBy             = x.CreatedBy,
                    CreatedDate           = x.CreatedDate,
                    CustomerNo            = x.CustomerNo,
                    EanCode               = x.EanCode,
                    VatNumber             = x.VatNumber,
                    ZipCode               = x.ZipCode,
                    CrmId                 = x.CrmId,
                    CadastralNumber       = x.CadastralNumber,
                    PropertyNumber        = x.PropertyNumber,
                    ApartmentNumber       = x.ApartmentNumber,
                    CompletionYear        = x.CompletionYear,
                    FloorsWithLivingSpace = x.FloorsWithLivingSpace,
                    CreatedAt             = x.CreatedAt,
                    UpdateAt              = x.UpdatedAt,
                    RelatedEntityId       = x.RelatedEntityId,
                    CreatedByUserId       = x.CreatedByUserId,
                    UpdatedByUserId       = x.UpdatedByUserId,
                    WorkflowState         = x.WorkflowState,
                    Version               = x.Version,
                    CadastralType         = x.CadastralType,
                    FullName              = $"{x.CompanyName} - {x.ContactPerson} - {x.CompanyAddress} - {x.CityName} - {x.Phone}"
                }).ToListAsync();

                var customersPnModel = new CustomersModel
                {
                    Total     = await customersQuery.Select(x => x.Id).CountAsync(),
                    Customers = customers
                };
                return(new OperationDataResult <CustomersModel>(true, customersPnModel));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _logger.LogError(e.Message);
                return(new OperationDataResult <CustomersModel>(false,
                                                                _customersLocalizationService.GetString("ErrorObtainingCustomersInfo") + e.Message));
            }
        }
        public async Task <OperationDataResult <CasePostsListModel> > GetAllPosts(
            CasePostsRequest requestModel)
        {
            try
            {
                var core = await _coreService.GetCore();

                var language = await _userService.GetCurrentUserLanguage();

                var casePostsListModel = new CasePostsListModel();
                var casePostsQuery     = _dbContext.CasePosts.AsQueryable();

                casePostsQuery = QueryHelper.AddSortToQuery(casePostsQuery, requestModel.Sort, requestModel.IsSortDsc);

                casePostsQuery = casePostsQuery
                                 .Where(x => x.CaseId == requestModel.CaseId);

                casePostsListModel.Total = await casePostsQuery.CountAsync();

                casePostsQuery = casePostsQuery
                                 .Skip(requestModel.Offset)
                                 .Take(requestModel.PageSize);

                var templateDto = await core.TemplateItemRead(requestModel.TemplateId, language);

                var caseDto = await core.CaseLookupCaseId(requestModel.CaseId);

                if (caseDto?.MicrotingUId == null || caseDto.CheckUId == null)
                {
                    throw new InvalidOperationException("caseDto not found");
                }

                var replyElement = await core.CaseRead((int)caseDto.MicrotingUId, (int)caseDto.CheckUId, language).ConfigureAwait(false);

                if (replyElement.DocxExportEnabled || replyElement.JasperExportEnabled)
                {
                    casePostsListModel.PdfReportAvailable = true;
                }

                casePostsListModel.CaseId     = requestModel.CaseId;
                casePostsListModel.CaseDoneAt = replyElement.DoneAt;

                var casePostList = await casePostsQuery
                                   .Select(x => new CasePostModel()
                {
                    Id      = x.Id,
                    Subject = x.Subject,
                    Text    = x.Text,
                    Date    = x.PostDate,
                    From    = _dbContext.Users
                              .Where(y => y.Id == x.CreatedByUserId)
                              .Select(y => $"{y.FirstName} {y.LastName}")
                              .FirstOrDefault(),
                    ToRecipients = x.Recipients
                                   .Select(y => $"{y.EmailRecipient.Name} ({y.EmailRecipient.Email})")
                                   .ToList(),
                    ToRecipientsTags = x.Tags
                                       .Select(y => y.EmailTag.Name)
                                       .ToList(),
                }).ToListAsync();

                await using var dbContext = core.DbContextHelper.GetDbContext();
                var caseEntity = await dbContext.Cases
                                 .AsNoTracking()
                                 .Include(x => x.Site)
                                 .SingleOrDefaultAsync(x => x.Id == requestModel.CaseId);

                if (caseEntity == null)
                {
                    return(new OperationDataResult <CasePostsListModel>(
                               false,
                               _localizationService.GetString("CaseNotFound")));
                }

                if (caseEntity.Site?.MicrotingUid != null)
                {
                    var site = await core.SiteRead((int)caseEntity.Site.MicrotingUid);

                    casePostsListModel.WorkerName = site.SiteName;
                }

                casePostsListModel.EFormName = templateDto.Label;

                if (templateDto.Field1 != null)
                {
                    casePostsListModel.AdditionalFields.Add(
                        new KeyValueStringModel
                    {
                        Key   = templateDto.Field1.Label,
                        Value = caseEntity.FieldValue1 == "null" ? "" : caseEntity.FieldValue1
                    });
                }

                if (templateDto.Field2 != null)
                {
                    casePostsListModel.AdditionalFields.Add(
                        new KeyValueStringModel
                    {
                        Key   = templateDto.Field2.Label,
                        Value = caseEntity.FieldValue2 == "null" ? "" : caseEntity.FieldValue2
                    });
                }

                if (templateDto.Field3 != null)
                {
                    casePostsListModel.AdditionalFields.Add(
                        new KeyValueStringModel
                    {
                        Key   = templateDto.Field3.Label,
                        Value = caseEntity.FieldValue3 == "null" ? "" : caseEntity.FieldValue3
                    });
                }

                if (templateDto.Field4 != null)
                {
                    casePostsListModel.AdditionalFields.Add(
                        new KeyValueStringModel
                    {
                        Key   = templateDto.Field4.Label,
                        Value = caseEntity.FieldValue4 == "null" ? "" : caseEntity.FieldValue4
                    });
                }

                if (templateDto.Field5 != null)
                {
                    casePostsListModel.AdditionalFields.Add(
                        new KeyValueStringModel
                    {
                        Key   = templateDto.Field5.Label,
                        Value = caseEntity.FieldValue5 == "null" ? "" : caseEntity.FieldValue5
                    });
                }

                if (templateDto.Field6 != null)
                {
                    casePostsListModel.AdditionalFields.Add(
                        new KeyValueStringModel
                    {
                        Key   = templateDto.Field6.Label,
                        Value = caseEntity.FieldValue6 == "null" ? "" : caseEntity.FieldValue6
                    });
                }

                if (templateDto.Field7 != null)
                {
                    casePostsListModel.AdditionalFields.Add(
                        new KeyValueStringModel
                    {
                        Key   = templateDto.Field7.Label,
                        Value = caseEntity.FieldValue7 == "null" ? "" : caseEntity.FieldValue7
                    });
                }

                if (templateDto.Field8 != null)
                {
                    casePostsListModel.AdditionalFields.Add(
                        new KeyValueStringModel
                    {
                        Key   = templateDto.Field8.Label,
                        Value = caseEntity.FieldValue8 == "null" ? "" : caseEntity.FieldValue8
                    });
                }

                if (templateDto.Field9 != null)
                {
                    casePostsListModel.AdditionalFields.Add(
                        new KeyValueStringModel
                    {
                        Key   = templateDto.Field9.Label,
                        Value = caseEntity.FieldValue9 == "null" ? "" : caseEntity.FieldValue9
                    });
                }

                if (templateDto.Field10 != null)
                {
                    casePostsListModel.AdditionalFields.Add(
                        new KeyValueStringModel
                    {
                        Key   = templateDto.Field10.Label,
                        Value = caseEntity.FieldValue10 == "null" ? "" : caseEntity.FieldValue10
                    });
                }

                casePostsListModel.CasePostsList = casePostList;
                return(new OperationDataResult <CasePostsListModel>(true, casePostsListModel));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                _logger.LogError(e.Message);
                return(new OperationDataResult <CasePostsListModel>(false,
                                                                    _localizationService.GetString("ErrorWhileObtainingPosts")));
            }
        }
        public async Task <OperationDataResult <Paged <PlanningPnModel> > > Index(PlanningsRequestModel pnRequestModel)
        {
            try
            {
                var sdkCore =
                    await _coreService.GetCore();

                await using var sdkDbContext = sdkCore.DbContextHelper.GetDbContext();

                var planningsQuery = _dbContext.Plannings
                                     .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                     .AsQueryable();

                if (!string.IsNullOrEmpty(pnRequestModel.NameFilter))
                {
                    planningsQuery = planningsQuery.Where(x =>
                                                          x.NameTranslations.Any(y => y.Name.Contains(pnRequestModel.NameFilter)));
                }

                if (!string.IsNullOrEmpty(pnRequestModel.DescriptionFilter))
                {
                    planningsQuery = planningsQuery.Where(x =>
                                                          x.Description.Contains(pnRequestModel.DescriptionFilter));
                }

                var excludeSort = new List <string> {
                    "TranslatedName"
                };
                // sort
                planningsQuery = QueryHelper.AddSortToQuery(planningsQuery, pnRequestModel.Sort,
                                                            pnRequestModel.IsSortDsc, excludeSort);

                // ReSharper disable once ForeachCanBeConvertedToQueryUsingAnotherGetEnumerator
                foreach (var tagId in pnRequestModel.TagIds)
                {
                    planningsQuery = planningsQuery.Where(x => x.PlanningsTags.Any(y =>
                                                                                   y.PlanningTagId == tagId && y.WorkflowState != Constants.WorkflowStates.Removed));
                }

                // ReSharper disable once ForeachCanBeConvertedToQueryUsingAnotherGetEnumerator
                foreach (var deviceUserId in pnRequestModel.DeviceUserIds)
                {
                    planningsQuery = planningsQuery.Where(x => x.PlanningSites
                                                          .Where(y => y.WorkflowState != Constants.WorkflowStates.Removed)
                                                          .Select(y => y.SiteId)
                                                          .Contains(deviceUserId));
                }

                // calculate total before pagination
                var total = await planningsQuery.Select(x => x.Id).CountAsync();

                // add select
                var localeString = await _userService.GetCurrentUserLocale();

                if (string.IsNullOrEmpty(localeString))
                {
                    return(new OperationDataResult <Paged <PlanningPnModel> >(false,
                                                                              _itemsPlanningLocalizationService.GetString("LocaleDoesNotExist")));
                }
                var language                = sdkDbContext.Languages.Single(x => x.LanguageCode == localeString);
                var languageIemPlanning     = _dbContext.Languages.Single(x => x.Id == language.Id);
                var planningQueryWithSelect = AddSelectToPlanningQuery(planningsQuery, languageIemPlanning);


                if (pnRequestModel.Sort == "TranslatedName")
                {
                    planningQueryWithSelect = pnRequestModel.IsSortDsc
                        ? planningQueryWithSelect.OrderByDescending(x => x.TranslatedName)
                        : planningQueryWithSelect.OrderBy(x => x.TranslatedName);
                }

                planningQueryWithSelect
                    = planningQueryWithSelect
                      .Skip(pnRequestModel.Offset)
                      .Take(pnRequestModel.PageSize);

                var checkListIds = await planningsQuery.Select(x => x.RelatedEFormId).ToListAsync();

                var checkListWorkflowState = sdkDbContext.CheckLists.Where(x => checkListIds.Contains(x.Id))
                                             .Select(checkList => new KeyValuePair <int, string>(checkList.Id, checkList.WorkflowState))
                                             .ToList();

                // add select and take objects from db
                var sql = planningQueryWithSelect.ToQueryString();
                List <PlanningPnModel> plannings = await planningQueryWithSelect.ToListAsync();

                // get site names

                var assignedSitesFromPlanning = plannings.SelectMany(y => y.AssignedSites).ToList();

                var sites = await sdkDbContext.Sites
                            .AsNoTracking()
                            .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                            .Where(x => assignedSitesFromPlanning.Select(y => y.SiteId).Contains(x.Id))
                            .Select(x => new CommonDictionaryModel
                {
                    Id   = x.Id,
                    Name = x.Name,
                }).ToListAsync();

                foreach (var planning in plannings)
                {
                    foreach (var assignedSite in assignedSitesFromPlanning)
                    {
                        foreach (var site in sites.Where(site => site.Id == assignedSite.SiteId))
                        {
                            assignedSite.Name = site.Name;
                        }
                    }

                    var(_, value) = checkListWorkflowState.SingleOrDefault(x => x.Key == planning.BoundEform.RelatedEFormId);
                    planning.BoundEform.IsEformRemoved = value == Constants.WorkflowStates.Removed;

                    // This is done to update existing Plannings to using EFormSdkFolderId instead of EFormSdkFolderName
                    if ((planning.Folder.EFormSdkFolderId == 0 || planning.Folder.EFormSdkFolderId == null) && planning.Folder.EFormSdkFolderName != null)
                    {
                        var locateFolder = await sdkDbContext.Folders
                                           .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                           .Where(x => x.Name == planning.Folder.EFormSdkFolderName)
                                           .FirstOrDefaultAsync();

                        if (locateFolder != null)
                        {
                            var thePlanning = await _dbContext.Plannings.SingleAsync(x => x.Id == planning.Id);

                            thePlanning.SdkFolderId = locateFolder.Id;
                            await thePlanning.Update(_dbContext);

                            planning.Folder.EFormSdkFolderId = locateFolder.Id;
                        }
                    }

                    var folder = await sdkDbContext.Folders
                                 .Include(x => x.Parent)
                                 .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                 .Where(y => y.Id == planning.Folder.EFormSdkFolderId)
                                 .Select(x => new
                    {
                        x.Name,
                        x.Parent,
                        x.Id,
                    })
                                 .FirstOrDefaultAsync();

                    if (folder != null)
                    {
                        planning.Folder.EFormSdkFolderId = folder.Id;
                        if (folder.Parent != null)
                        {
                            planning.Folder.EFormSdkParentFolderName = folder.Parent.Name;
                        }
                        else
                        {
                            planning.Folder.EFormSdkFolderName = null;
                        }
                    }
                }

                var planningsModel = new Paged <PlanningPnModel>
                {
                    Total    = total,
                    Entities = plannings
                };

                return(new OperationDataResult <Paged <PlanningPnModel> >(true, planningsModel));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                return(new OperationDataResult <Paged <PlanningPnModel> >(false,
                                                                          _itemsPlanningLocalizationService.GetString("ErrorObtainingLists")));
            }
        }