Example #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);
        }
Example #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);
        }
Example #3
0
        public async Task <IActionResult> GetDataList([FromBody] BaseModelReportParam p)
        {
            p.UserName = GetUserName();
            var result = await _reportData.GetDataList(p);

            return(Tools.CreateResult(true, "", result));
        }
        /// <summary>
        /// Получить модель для редактирования данных
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public virtual async Task <IDictionary <string, object> > GetDataEditModel(BaseModelReportParam p)
        {
            var formModel = await _reportDbContext.FormModel.FirstOrDefaultAsync(f => f.Id == p.FormId);

            if (formModel == null)
            {
                return(null);
            }
            var fileds = (await _reportManager.GetFieldsFormAsync(p.UserName, p.FormId, false)).ToList();

            using var connection = _connectorManager.GetConnection();
            var typeControls = new[] { TypeControl.Details, TypeControl.FormSelect };

            var db = new QueryFactory(connection, _connectorManager.Compiler);

            var query = await GenerateSqlViewEditModel(fileds.Where(f => !typeControls.Contains(f.TypeControl)),
                                                       formModel.TableName, p.ModelId);

            var resQuery = await db.FromQuery(query).FirstOrDefaultAsync();

            return(resQuery as IDictionary <string, object>);
        }
        public override async Task <IEnumerable <IDictionary <string, object> > > GetDataList(BaseModelReportParam p)
        {
            using (var conn = new MySqlConnection(_dataBaseMain.ConntectionString))
            {
                var result = await conn.QueryAsync(@$ "SELECT
                                                                          u.*, COUNT(DISTINCT m.Id) AS CountUser 
                                                                        FROM client c
                                                                          JOIN managerclient m ON c.Id = m.ClientId
                                                                          JOIN user u ON m.UserId = u.Id 
                                                                          JOIN clientproduct cp ON cp.ClientId = c.Id
                                                                          JOIN product p ON p.Id = cp.ProductId
                                                                        GROUP BY u.Id
                                                                        ORDER BY p.OrderIndex
                                                              ");

                return(result.Cast <IDictionary <string, object> >());
            }
        }
Example #6
0
        public override async Task <IEnumerable <IDictionary <string, object> > > GetDataList(BaseModelReportParam p)
        {
            using (var conn = new MySqlConnection(_dataBaseMain.ConntectionString))
            {
                var result = await conn.QueryAsync(@$ "SELECT c.Id, p.Name AS ProductName FROM clientproduct c
                                                                            JOIN product p ON c.ProductId = p.Id AND c.ClientId = {p.FormIdByDetail} group by p.Id;
                                                              ");

                return(result.Cast <IDictionary <string, object> >());
            }
        }
Example #7
0
        public async Task <IActionResult> GetButtonsDetail([FromBody] BaseModelReportParam p)
        {
            var result = await _reportData.GetButtonsDetail(p.FormId, GetUserName());

            return(Tools.CreateResult(true, "", result));
        }
        public override async Task <IEnumerable <IDictionary <string, object> > > GetDataList(BaseModelReportParam p)
        {
            //using (var conn = new MySqlConnection(_dataBaseMain.ConntectionString))
            //{

            //var result = await conn.QueryAsync(@$"SELECT c.* FROM client c
            //                                                  JOIN managerclient m ON c.Id = m.ClientId
            //                                                  JOIN user u ON m.UserId = u.Id AND u.Account = '{p.UserName}'
            //                                                  JOIN clientproduct cp ON cp.ClientId = c.Id
            //                                                  JOIN product p ON p.Id = cp.ProductId
            //                                                GROUP BY c.Id
            //                                                ORDER BY p.OrderIndex
            //                                              ");
            var user = await _clientDbContext.User.FirstOrDefaultAsync(f => f.Account == p.UserName);

            var data = await _managerClients.GetOrderedManagerClients(user?.Id ?? 0);

            return(data.Select(s => s.GetType().GetProperties().Select(ss => new
            {
                Key = ss.Name,
                Value = ss.GetValue(s, null)
            }).ToDictionary(arg => arg.Key, arg => arg.Value)));
            //}
        }
        /// <summary>
        /// Получить данные для формы редактирования данных
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public virtual async Task <IEnumerable <IDictionary <string, object> > > GetDataList(BaseModelReportParam p)
        {
            try
            {
                var formModel = await _reportDbContext.FormModel.FirstOrDefaultAsync(f => f.Id == p.FormId);

                if (formModel == null)
                {
                    return(null);
                }
                var fileds = (await _reportManager.GetFieldsFormAsync(p.UserName, p.FormId, false, fields =>
                                                                      fields.Where(f => !(f.IsVirtual ?? false)))).ToList();
                if (fileds.Count == 0)
                {
                    return(null);
                }
                using var connection = _connectorManager.GetConnection();
                var typeControls = new[] { TypeControl.Details, TypeControl.FormSelect };

                var db = new QueryFactory(connection, _connectorManager.Compiler);

                var query = (await GenerateSqlView(fileds.Where(f => !typeControls.Contains(f.TypeControl)),
                                                   formModel.TableName));
                if (p.FormIdByDetail != 0)
                {
                    query.Where(p.FieldWhere, "=", p.FormIdByDetail);
                }
                query.ToString();
                var resQuery = await db.FromQuery(query).GetAsync();

                return(resQuery.Cast <IDictionary <string, object> >());
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(null);
            }
        }