Exemplo n.º 1
0
        /// <summary>
        /// Получить данные для списка
        /// </summary>
        /// <param name="parametr"></param>
        /// <returns></returns>
        public async Task <ReportResultData> GetEditModel(BaseModelReportParam parametr)
        {
            var resultData = new ReportResultData();
            var accessForm = await _accessManager.GetAccessFormAsync(parametr.UserName, parametr.FormId);

            if (accessForm != null && (int)accessForm.TypeAccec < 2)
            {
                throw new UserMessageException("Вы запросили данные режима, на который у вас не открыты права");
            }
            var formModelDto =
                Mapper.Map <FormModelDto>((
                                              await _reportDbContext.FormModel.FirstOrDefaultAsync(f => f.Id == parametr.FormId)));

            if (formModelDto == null)
            {
                throw new UserMessageException("Не удалось определить форму");
            }

            resultData.FormModel   = formModelDto;
            resultData.FieldAccess = await _reportManager.GetFieldsFormWithProfileAsync(parametr.UserName, parametr.FormId, false, fields => fields.Where(f => f.IsDetail ?? false));

            // resultData.Buttons = await _reportManager.GetButtonsAsync(parametr.UserName, parametr.FormId, false);
            var report = AutoFac.ResolveNamed <IReportEngineData>(formModelDto.NameClassDataEngine);
            var resultDataFieldAccess = resultData.FieldAccess as FieldAccessDto[] ?? resultData.FieldAccess.ToArray();

            resultData.Data = report == null ? "" : GetModelAccess(await report.GetDataEditModel(parametr), resultDataFieldAccess);
            return(resultData);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Получить данные для списка
        /// </summary>
        /// <param name="parametr"></param>
        /// <returns></returns>
        public async Task <ReportResultData> GetDataList(BaseModelReportParam parametr)
        {
            var resultData = new ReportResultData();
            var accessForm = await _accessManager.GetAccessFormAsync(parametr.UserName, parametr.FormId);

            if (accessForm != null && (int)accessForm.TypeAccec < 2)
            {
                throw new UserMessageException("Вы запросили данные режима, на который у вас не открыты права");
            }
            var formModelDto =
                (await _reportDbContext.FormModel.FirstOrDefaultAsync(f => f.Id == parametr.FormId)).Map <FormModelDto>();

            if (formModelDto == null)
            {
                throw new UserMessageException("Не удалось определить форму");
            }
            resultData.FormModel   = formModelDto;
            resultData.FieldAccess = await _reportManager.GetFieldsFormWithProfileAsync(parametr.UserName, parametr.FormId, false,
                                                                                        fields => fields.Where(f => (f.IsVisibleList ?? false) || string.IsNullOrWhiteSpace(f.Express)));

            var report = AutoFac.ResolveNamed <IReportEngineData>(string.IsNullOrWhiteSpace(formModelDto.NameClassDataEngine) ? nameof(ReportEngineDefaultData) : formModelDto.NameClassDataEngine);

            var resultDataFieldAccess = resultData.FieldAccess as FieldAccessDto[] ?? resultData.FieldAccess.ToArray();

            resultData.Data    = GetDataAccess(report == null ? null : await report.GetDataList(parametr), resultDataFieldAccess);
            resultData.Columns = await _columnCreater.GetColumns(resultDataFieldAccess);

            resultData.KeyField     = resultDataFieldAccess.FirstOrDefault(f => f.IsKey ?? false)?.Name;
            resultData.FormProperty = await _columnCreater.GetProperty(resultDataFieldAccess, formModelDto);

            return(resultData);
        }
Exemplo n.º 3
0
        public async Task <ResultCrmDb> PreviewFile(byte[] fileData, ImportParam importParam)
        {
            var result = new ResultCrmDb();

            importParam.TypeImp = ImportType.Preview;
            try
            {
                // TheOktmo потом перенести в Settings
                _dohodDbContext.SetTheOktmo(importParam, result);
                if (!result.Succeeded)
                {
                    return(result);
                }

                var parserFile = AutoFac.ResolveNamed <IParseFile>(importParam.FormatGroup);
                parserFile.FileData    = fileData;
                parserFile.ImportParam = importParam;
                var parserResult = await parserFile.ParseFile();

                if (!parserResult.Succeeded)
                {
                    return(parserResult);
                }

                var previewFormat = AutoFac.ResolveNamed <IPreviewFormat>(importParam.FormatGroup + importParam.Format);
                result.Result = (ImpPreviewData)await previewFormat.PreviewFormat(parserResult.Result, importParam);
            }
            catch (Exception ex)
            {
                result.AddError(Constant.ErrCodeImport, ex.Message);
                result.AddError(Constant.ErrCodeStackTrace, ex.StackTrace);
            }
            return(result);
        }
Exemplo n.º 4
0
        // ======================================== fk_doc === fk_code ==========================

        public async Task <ResultCrmDb> LoadFkDocxFormat(byte[] fileData, ImportParam importParam)
        {
            var result = new ResultCrmDb();

            importParam.TypeImp = ImportType.None;
            try
            {
                var parserFile = AutoFac.ResolveNamed <IParseFile>("FKDOCX");
                parserFile.FileData    = fileData;
                parserFile.ImportParam = importParam;
                var parserResult = await parserFile.ParseFile();

                if (!parserResult.Succeeded)
                {
                    return(parserResult);
                }

                var parserFormat = AutoFac.ResolveNamed <IParserFormat>("FKDOCX00");
                var fkCodes      = (List <fk_code>) await parserFormat.ParserFormat(parserResult.Result, importParam);
                await WriteFkCode(fkCodes);
            }
            catch (Exception ex)
            {
                result.AddError(Constant.ErrCodeImport, ex.Message);
                result.AddError(Constant.ErrCodeStackTrace, ex.StackTrace);
            }
            return(result);
        }
Exemplo n.º 5
0
        public async Task InvokeAsync(HttpContext context)
        {
            var auth = AutoFac.ResolveNamed <IAuthUserEngine>(_configuration["AuthSchema"], true);

            if (auth != null)
            {
                await auth.SetAuthUser(context);
            }

            await _next(context);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Проверка сохранеяемой модели по предоставленным правилам
        /// </summary>
        /// <param name="saveModel">Модель для сохранения</param>
        /// <param name="formModelId">Системный номер модели данных</param>
        /// <returns></returns>
        public async Task <ResultCrmDb> ValidateModel(dynamic saveModel, int formModelId)
        {
            var formModelDto =
                (await _reportDbContext.FormModel.FirstOrDefaultAsync(f => f.Id == formModelId)).Map <FormModelDto>();

            if (formModelDto == null)
            {
                throw new UserMessageException("Не удалось определить форму");
            }
            var report = AutoFac.ResolveNamed <IReportEngineData>(string.IsNullOrWhiteSpace(formModelDto.NameClassDataEngine) ? nameof(ReportEngineDefaultData) : formModelDto.NameClassDataEngine);

            return(await report.ValidateModel(saveModel, formModelDto));
        }
Exemplo n.º 7
0
        public async Task <ResultCrmDb> Action(int formId, int[] idModel, string userName, ActionArgs otherInfo, string sysname)
        {
            var formModelDto =
                (await _reportDbContext.FormModel.FirstOrDefaultAsync(f => f.Id == formId)).Map <FormModelDto>();

            if (formModelDto == null)
            {
                throw new UserMessageException("Не удалось определить форму");
            }
            var report = AutoFac.ResolveNamed <IActionBtnFormModel>(sysname);

            if (report == null)
            {
                return(new ResultCrmDb());
            }
            return(await report.Action(otherInfo, userName, formId, idModel));
        }
Exemplo n.º 8
0
        public async Task <ResultCrmDb> AfterSaveModel(int formId, int idModel, string userName)
        {
            var formModelDto =
                (await _reportDbContext.FormModel.FirstOrDefaultAsync(f => f.Id == formId)).Map <FormModelDto>();

            if (formModelDto == null)
            {
                throw new UserMessageException("Не удалось определить форму");
            }
            var report = AutoFac.ResolveNamed <IActionAfterSave>(formModelDto.TableName, true);

            if (report == null)
            {
                return(new ResultCrmDb());
            }
            return(await report.BeforeSave(idModel, userName));
        }
Exemplo n.º 9
0
        /// <summary>
        /// Удаление моделей данных
        /// </summary>
        /// <param name="formModel">Сущность для которой нужно удалить данные</param>
        /// <param name="userName">Пользователь, который удаляет данные</param>
        /// <param name="key">Список ключей сущности, которые нужно удалить</param>
        /// <returns></returns>
        public async Task <ResultCrmDb> RemoveEntity(int formModel, string userName, string[] key)
        {
            var accessForm = await _accessManager.GetAccessFormAsync(userName, formModel);

            if (accessForm != null && (int)accessForm.TypeAccec < 2)
            {
                throw new UserMessageException("Вы запросили данные режима, на который у вас не открыты права");
            }
            var formModelDto =
                (await _reportDbContext.FormModel.FirstOrDefaultAsync(f => f.Id == formModel)).Map <FormModelDto>();

            if (formModelDto == null)
            {
                throw new UserMessageException("Не удалось определить форму");
            }
            var report = AutoFac.ResolveNamed <IReportEngineData>(string.IsNullOrWhiteSpace(formModelDto.NameClassDataEngine) ? nameof(ReportEngineDefaultData) : formModelDto.NameClassDataEngine);

            return(await report.RemoveEntity(formModelDto, userName, key));
        }
Exemplo n.º 10
0
        protected BaseServiceTestNamed(string nameServiceResolve)
        {
            var mockDataBaseMain = new Mock <IDataBaseMain>();
            var mockDataBaseIs4  = new Mock <IDataBaseIs4>();
            var logger           = new Mock <ILogger>();

            var configiguration     = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
            var connectionString    = configiguration.ConnectionStrings.ConnectionStrings["MySqlDatabase"].ConnectionString;
            var connectionStringIs4 = configiguration.ConnectionStrings.ConnectionStrings["MySqlDatabaseIS4"].ConnectionString;

            mockDataBaseMain.Setup(main => main.ConntectionString).Returns(connectionString);
            mockDataBaseIs4.Setup(main => main.ConntectionString).Returns(connectionStringIs4);
            var events   = new OnStartupEvents();
            var services = new ServiceCollection();

            services.AddSingleton(mockDataBaseMain.Object);
            services.AddSingleton(mockDataBaseIs4.Object);
            events.OnConfigureServicesAfterAddMvc(services, null);


            var files = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll");

            foreach (var file in files)
            {
                if (file.IndexOf("testhost.dll", StringComparison.Ordinal) > -1)
                {
                    continue;
                }

                System.Runtime.Loader.AssemblyLoadContext.Default
                .LoadFromAssemblyPath(file);
            }

            AutoFac.Init(DataBaseName.MySql, builder =>
            {
                builder.Populate(services);
                builder.RegisterInstance(logger.Object);
                //builder.RegisterInstance(mockDataBaseIs4);
                //builder.RegisterInstance(mockDataBaseMain);
            });
            Service = AutoFac.ResolveNamed <TService>(nameServiceResolve);
        }
Exemplo n.º 11
0
        public async Task <ResultCrmDb> ImportFile(byte[] fileData, ImportParam importParam)
        {
            var result = new ResultCrmDb();

            importParam.TypeImp = ImportType.Import;
            try
            {
                // TheOktmo потом перенести в Settings
                _dohodDbContext.SetTheOktmo(importParam, result);
                if (!result.Succeeded)
                {
                    return(result);
                }

                var parserFile = AutoFac.ResolveNamed <IParseFile>(importParam.FormatGroup);
                parserFile.FileData    = fileData;
                parserFile.ImportParam = importParam;
                var parserResult = await parserFile.ParseFile();

                if (!parserResult.Succeeded)
                {
                    return(parserResult);
                }


                var parserFormat = AutoFac.ResolveNamed <IParserFormat>(importParam.FormatGroup + importParam.Format);
                var dohods       = (List <t_dohod>) await parserFormat.ParserFormat(parserResult.Result, importParam);
                await WriteImportedData(dohods);

                await parserFormat.AfterDataWrited(dohods, importParam);

                result.Result = ImportInfo(parserFormat.PreviewData, importParam);
            }
            catch (Exception ex)
            {
                result.AddError(Constant.ErrCodeImport, ex.Message);
                result.AddError(Constant.ErrCodeStackTrace, ex.StackTrace);
            }
            //_dohodDbContext.TruncateDbTable("t_dohorig");
            //dohodDbContext.TruncateDbTable("t_dohod");
            return(result);
        }
Exemplo n.º 12
0
 /// <summary>
 /// Конструктор
 /// </summary>
 public CrmDesignerController(IReportManager reportManager) : base(ModuleName)
 {
     _reportManager = reportManager;
     _generateField = AutoFac.ResolveNamed <IGenerateField>(nameof(GenerateFieldMySql));
 }