public async Task <OperationDataResult <OuterInnerResourceSettings> > GetSettings()
        {
            try
            {
                var option = _options.Value;
                if (option.Token == "...")
                {
                    const string chars  = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
                    var          random = new Random();
                    var          result = new string(chars.Select(c => chars[random.Next(chars.Length)]).Take(32).ToArray());
                    await _options.UpdateDb(settings => { settings.Token = result; }, _dbContext, _userService.UserId);
                }

                if (option.SdkConnectionString == "...")
                {
                    var connectionString = _dbContext.Database.GetDbConnection().ConnectionString;

                    var dbNameSection = Regex.Match(connectionString, @"(Database=(...)_eform-angular-outer-inner-resource-plugin;)").Groups[0].Value;
                    var dbPrefix      = Regex.Match(connectionString, @"Database=(\d*)_").Groups[1].Value;
                    var sdk           = $"Database={dbPrefix}_SDK;";
                    connectionString = connectionString.Replace(dbNameSection, sdk);
                    await _options.UpdateDb(settings => { settings.SdkConnectionString = connectionString; }, _dbContext, _userService.UserId);
                }

                return(new OperationDataResult <OuterInnerResourceSettings>(true, option));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _logger.LogError(e.Message);
                return(new OperationDataResult <OuterInnerResourceSettings>(false,
                                                                            _outerInnerResourceLocalizationService.GetString("ErrorWhileObtainingTrashInspectionSettings") + e.Message));
            }
        }
예제 #2
0
        public OperationDataResult <ReportNamesModel> GetReportNames()
        {
            var reportNamesModel = new ReportNamesModel
            {
                ReportNameModels = new List <ReportNameModel>()
            };
            var outerResourceName = _options.Value.OuterResourceName;
            var innerResourceName = _options.Value.InnerResourceName;

            reportNamesModel.ReportNameModels.Add(new ReportNameModel
            {
                Id   = 1,
                Name = _outerInnerResourceLocalizationService.GetString("Employee")
            });
            reportNamesModel.ReportNameModels.Add(new ReportNameModel
            {
                Id   = 2,
                Name = innerResourceName
            });
            reportNamesModel.ReportNameModels.Add(new ReportNameModel
            {
                Id   = 3,
                Name = outerResourceName
            });
            reportNamesModel.ReportNameModels.Add(new ReportNameModel
            {
                Id   = 4,
                Name = _outerInnerResourceLocalizationService.GetString("Employee") + "-" + outerResourceName
            });
            reportNamesModel.ReportNameModels.Add(new ReportNameModel
            {
                Id   = 5,
                Name = _outerInnerResourceLocalizationService.GetString("Employee") + "-" + innerResourceName
            });
            reportNamesModel.ReportNameModels.Add(new ReportNameModel
            {
                Id   = 6,
                Name = _outerInnerResourceLocalizationService.GetString("Employee") + "-Total"
            });
            reportNamesModel.ReportNameModels.Add(new ReportNameModel
            {
                Id   = 7,
                Name = $"{outerResourceName} {innerResourceName}",
            });
            reportNamesModel.ReportNameModels.Add(new ReportNameModel
            {
                Id   = 8,
                Name = $"{innerResourceName} {outerResourceName}",
            });

            return(new OperationDataResult <ReportNamesModel>(true, reportNamesModel));
        }
예제 #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")));
            }
        }
        public bool WriteRecordsExportModelsToExcelFile(ReportModel reportModel, GenerateReportModel generateReportModel, string destFile)
        {
            FileInfo file = new FileInfo(destFile);

            using (ExcelPackage package = new ExcelPackage(file))
            {
                ExcelWorksheet worksheet = package.Workbook.Worksheets[ExcelConsts.MachineAreaReportSheetNumber];
                // Fill base info
                string periodFromTitle = _outerInnerResourceLocalizationService.GetString("DateFrom");
                worksheet.Cells[ExcelConsts.EmployeeReport.PeriodFromTitleRow, ExcelConsts.EmployeeReport.PeriodFromTitleCol].Value = periodFromTitle;
                worksheet.Cells[ExcelConsts.EmployeeReport.PeriodFromRow, ExcelConsts.EmployeeReport.PeriodFromCol].Value           = generateReportModel.DateFrom;

                string periodToTitle = _outerInnerResourceLocalizationService.GetString("DateTo");
                worksheet.Cells[ExcelConsts.EmployeeReport.PeriodToTitleRow, ExcelConsts.EmployeeReport.PeriodToTitleCol].Value = periodToTitle;
                worksheet.Cells[ExcelConsts.EmployeeReport.PeriodToRow, ExcelConsts.EmployeeReport.PeriodToCol].Value           = generateReportModel.DateTo;

                string showDataByTitle = _outerInnerResourceLocalizationService.GetString("ShowDataBy");
                worksheet.Cells[ExcelConsts.EmployeeReport.PeriodTypeTitleRow, ExcelConsts.EmployeeReport.PeriodTypeTitleCol].Value = showDataByTitle;
                string showDataByValue = _outerInnerResourceLocalizationService.GetString(generateReportModel.Type.ToString());
                worksheet.Cells[ExcelConsts.EmployeeReport.PeriodTypeRow, ExcelConsts.EmployeeReport.PeriodTypeCol].Value = showDataByValue;

                string reportTitle = _outerInnerResourceLocalizationService.GetString("Report");
                worksheet.Cells[ExcelConsts.EmployeeReport.ReportTitleRow, ExcelConsts.EmployeeReport.ReportTitleCol].Value = reportTitle;
                string reportName = _outerInnerResourceLocalizationService.GetString(reportModel.HumanReadableName);
                worksheet.Cells[ExcelConsts.EmployeeReport.ReportNameRow, ExcelConsts.EmployeeReport.ReportNameCol].Value = reportName;

//                Debugger.Break();
                int entityPosition = 0;
                foreach (SubReportModel subReport in reportModel.SubReports)
                {
                    // entity names
                    for (int i = 0; i < subReport.Entities.Count; i++)
                    {
                        int rowIndex = ExcelConsts.EmployeeReport.EntityNameStartRow + i + entityPosition;
                        ReportEntityModel reportEntity = subReport.Entities[i];
                        worksheet.UpdateValue(rowIndex, ExcelConsts.EmployeeReport.EntityNameStartCol, reportEntity?.EntityName, true);
                    }

                    // related entity names
                    for (int i = 0; i < subReport.Entities.Count; i++)
                    {
                        int rowIndex = ExcelConsts.EmployeeReport.RelatedEntityNameStartRow + i + entityPosition;
                        ReportEntityModel reportEntity = subReport.Entities[i];
                        worksheet.UpdateValue(rowIndex, ExcelConsts.EmployeeReport.RelatedEntityNameStartCol,
                                              reportEntity?.RelatedEntityName, true);
                    }

                    // headers
                    for (int i = 0; i < reportModel.ReportHeaders.Count; i++)
                    {
                        ReportEntityHeaderModel reportHeader = reportModel.ReportHeaders[i];
                        int colIndex = ExcelConsts.EmployeeReport.HeaderStartCol + i;
                        int rowIndex = ExcelConsts.EmployeeReport.HeaderStartRow + entityPosition;
                        worksheet.UpdateValue(rowIndex, colIndex, reportHeader?.HeaderValue, true, true, Color.Wheat);
                    }

                    // vertical sum
                    for (int i = 0; i < subReport.Entities.Count; i++)
                    {
                        int rowIndex = ExcelConsts.EmployeeReport.VerticalSumStartRow + i + entityPosition;
                        ReportEntityModel reportEntity = subReport.Entities[i];
                        worksheet.UpdateValue(rowIndex, ExcelConsts.EmployeeReport.VerticalSumStartCol, reportEntity?.TotalTime, true, "0");
                    }

                    // vertical sum title
                    worksheet.UpdateValue(ExcelConsts.EmployeeReport.VerticalSumTitleRow + entityPosition, ExcelConsts.EmployeeReport.VerticalSumTitleCol, "Sum", true, true);

                    // data
                    for (int i = 0; i < subReport.Entities.Count; i++)
                    {
                        ReportEntityModel reportEntity = subReport.Entities[i];
                        int rowIndex = ExcelConsts.EmployeeReport.DataStartRow + i + entityPosition;
                        for (int y = 0; y < reportEntity.TimePerTimeUnit.Count; y++)
                        {
                            decimal time     = reportEntity.TimePerTimeUnit[y];
                            int     colIndex = ExcelConsts.EmployeeReport.DataStartCol + y;
                            worksheet.UpdateValue(rowIndex, colIndex, time, true, "0");
                        }
                    }

                    // horizontal sum
                    int horizontalSumRowIndex = ExcelConsts.EmployeeReport.DataStartRow + subReport.Entities.Count + entityPosition;
                    for (int i = 0; i < subReport.TotalTimePerTimeUnit.Count; i++)
                    {
                        decimal time     = subReport.TotalTimePerTimeUnit[i];
                        int     colIndex = ExcelConsts.EmployeeReport.HorizontalSumStartCol + i;
                        worksheet.UpdateValue(horizontalSumRowIndex, colIndex, time, true, "0");
                    }

                    // Report sum
                    int     totalSumRowIndex = ExcelConsts.EmployeeReport.DataStartRow + subReport.Entities.Count + entityPosition;
                    decimal totalSum         = subReport.TotalTime;
                    worksheet.UpdateValue(totalSumRowIndex, ExcelConsts.EmployeeReport.TotalSumCol, totalSum, true);
                    worksheet.UpdateValue(totalSumRowIndex, ExcelConsts.EmployeeReport.TotalSumTitleCol, "Sum", true);
                    entityPosition += subReport.Entities.Count + 3;
                }

                package.Save(); //Save the workbook.
            }
            return(true);
        }
        public async Task <OperationDataResult <OuterResourcesModel> > Index(OuterResourceRequestModel requestModel)
        {
            try
            {
                var outerResourcesModel = new OuterResourcesModel();

                var query = _dbContext.OuterResources.AsQueryable();
                if (!string.IsNullOrEmpty(requestModel.Sort))
                {
                    if (requestModel.IsSortDsc)
                    {
                        query = query
                                .CustomOrderByDescending(requestModel.Sort);
                    }
                    else
                    {
                        query = query
                                .CustomOrderBy(requestModel.Sort);
                    }
                }
                else
                {
                    query = _dbContext.OuterResources
                            .OrderBy(x => x.Id);
                }

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

                if (requestModel.PageSize != null)
                {
                    query = query
                            .Skip(requestModel.Offset)
                            .Take((int)requestModel.PageSize);
                }

                var outerResourceList = await query.Select(x => new OuterResourceModel()
                {
                    Name       = x.Name,
                    Id         = x.Id,
                    ExternalId = x.ExternalId,
                    RelatedInnerResourcesIds = _dbContext.OuterInnerResources.AsNoTracking().Where(y =>
                                                                                                   y.OuterResourceId == x.Id && y.WorkflowState != Constants.WorkflowStates.Removed).Select(z => z.InnerResourceId).ToList()
                }).AsNoTracking().ToListAsync();

                outerResourcesModel.Total = await _dbContext.OuterResources.AsNoTracking().Where(x => x.WorkflowState != Constants.WorkflowStates.Removed).CountAsync();

                outerResourcesModel.OuterResourceList = outerResourceList;

                try
                {
                    outerResourcesModel.Name = _dbContext.PluginConfigurationValues.SingleOrDefault(x =>
                                                                                                    x.Name == "OuterInnerResourceSettings:OuterResourceName")
                                               ?.Value;
                }
                catch (Exception)
                {
                    // ignored
                }

                return(new OperationDataResult <OuterResourcesModel>(true, outerResourcesModel));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _logger.LogError(e.Message);
                return(new OperationDataResult <OuterResourcesModel>(false,
                                                                     _localizationService.GetString("ErrorObtainOuterResources")));
            }
        }