/// <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); }
/// <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); }
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> >()); } }
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> >()); } }
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); } }