コード例 #1
0
        public FilterExecution GetOrInsertFilterExecution(string controller)
        {
            FilterExecution filterExecution = null;
            Guid            idUser          = new Guid(base.ApplicationUserCurrent.UserId);

            filterExecution = _filterExecutionBusiness.GetFilterExecution(controller, idUser);


            if (null == filterExecution)
            {
                var filterController = _filterControllerBusiness.GetControllerById(controller);

                if (null != filterController)
                {
                    try
                    {
                        filterExecution = new FilterExecution();

                        filterExecution.IdUser = idUser;

                        filterExecution.FilterControllers  = filterController;
                        filterExecution.IdFilterController = filterController.Id;

                        _filterExecutionBusiness.InsertOrUpdate(filterExecution);
                    }
                    catch (ExceptionMardis ex)
                    {
                        //logg de aplicacion
                        _logger.LogError(ex.Message);
                        filterExecution = null;
                    }
                }
                else
                {
                    //logg de aplicacion
                }
            }
            else
            {
                filterExecution.FilterExecutionDetails = _filterExecutionDetailBusiness.GetExecutionDetailByExecution(filterExecution.Id);
            }

            return(filterExecution);
        }
コード例 #2
0
        public List <dynamic> GetResults(string idFilterExecution, string propertyName, string propertyValue)
        {
            Guid            idAccount              = base.ApplicationUserCurrent.AccountId;
            FilterExecution filterExecution        = _filterExecutionBusiness.GetFilterExecution(new Guid(idFilterExecution));
            StringBuilder   sql                    = new StringBuilder();
            StringBuilder   sqlReference           = new StringBuilder();
            string          referencesTablesSelect = "";
            var             retObject              = new List <dynamic>();


            if (null != filterExecution)
            {
                filterExecution.FilterExecutionDetails =
                    _filterExecutionDetailBusiness.GetExecutionDetailByExecution(filterExecution.Id);

                filterExecution.DateInit = DateTime.Now;

                string nameTableBase   = filterExecution.FilterControllers.NameTable;
                int    numberParameter = 0;



                List <FilterTable> itemTables = _filterTableBusiness.GetFilterTable(filterExecution.FilterControllers.Id);

                foreach (var itemReferences in itemTables)
                {
                    if (CFilter.AffirmationHasRelation.Equals(itemReferences.HasRelation))
                    {
                        string tableReference = itemReferences.TableInitial;

                        List <FilterField> lstItemFilterField =
                            _filterFieldsBusiness.GetFilterFieldByTable(itemReferences.Id);

                        foreach (var tempField in lstItemFilterField)
                        {
                            referencesTablesSelect += "," + itemReferences.TableInitial + "." + tempField.Field + " as " + itemReferences.TableInitial + tempField.Field;
                        }

                        var aliasTable = "";
                        if (itemReferences.FieldMainTable.IndexOf(".", StringComparison.Ordinal) < 0)
                        {
                            aliasTable = "tb.";
                        }

                        sqlReference.Append(" INNER JOIN ").Append(itemReferences.TableRelation).Append(" as ").Append(tableReference);
                        sqlReference.Append(" ON ").Append(aliasTable).Append(itemReferences.FieldMainTable)
                        .Append(" = ").Append(tableReference).Append(".")
                        .Append(itemReferences.FieldRelationTable);
                    }
                }

                sql.Append(" SELECT tb.*")
                .Append(referencesTablesSelect)
                .Append(" ")
                .Append(" FROM ").Append(nameTableBase)
                .Append(" as tb ");


                sql.Append(sqlReference);
                sql.Append(" WHERE 1=1 ");

                if (!(string.IsNullOrEmpty(propertyName) || string.IsNullOrEmpty(propertyValue)))
                {
                    sql.Append(" and tb.")
                    .Append(propertyName)
                    .Append(" = '")
                    .Append(propertyValue)
                    .Append("' ");
                }

                using (var cmd = Context.Database.GetDbConnection().CreateCommand())
                {
                    if (CFilter.AffirmationHasRelation.Equals(filterExecution.FilterControllers.HasStatus))
                    {
                        sql.Append(UtilSqlBuilder.ConditionEqual("tb", "StatusRegister", CStatusRegister.Active, numberParameter++, cmd));
                    }

                    if (CFilter.AffirmationHasRelation.Equals(filterExecution.FilterControllers.HasAccount))
                    {
                        sql.Append(UtilSqlBuilder.ConditionEqual("tb", "IdAccount", idAccount, numberParameter++, cmd));
                    }

                    foreach (var itemReferences in itemTables)
                    {
                        if (CFilter.AffirmationHasRelation.Equals(itemReferences.HasRelation))
                        {
                            if (CFilter.AffirmationHasRelation.Equals(itemReferences.HasStatus))
                            {
                                sql.Append(UtilSqlBuilder.ConditionEqual(itemReferences.TableInitial, "StatusRegister", CStatusRegister.Active, numberParameter++, cmd));
                            }

                            if (CFilter.AffirmationHasRelation.Equals(itemReferences.HasAccount))
                            {
                                sql.Append(UtilSqlBuilder.ConditionEqual(itemReferences.TableInitial, "IdAccount", idAccount, numberParameter++, cmd));
                            }
                        }
                    }


                    foreach (var fieldsTemp in filterExecution.FilterExecutionDetails)
                    {
                        if (CFilter.AffirmationHasRelation.Equals(fieldsTemp.FilterCriteria.FilterField.FilterTable.HasRelation))
                        {
                            sql.Append(
                                UtilSqlBuilder.AddCondition(fieldsTemp.FilterCriteria.FilterField.FilterTable.TableInitial,
                                                            fieldsTemp.FilterCriteria.FilterField.Field,
                                                            fieldsTemp.FilterCriteria.TypeFilter.SignFilter,
                                                            fieldsTemp.Value,
                                                            numberParameter,
                                                            cmd)
                                );
                        }
                        else if (CFilter.NegationHasRelation.Equals(fieldsTemp.FilterCriteria.FilterField.FilterTable.HasRelation))
                        {
                            sql.Append(
                                UtilSqlBuilder.AddCondition("tb",
                                                            fieldsTemp.FilterCriteria.FilterField.Field,
                                                            fieldsTemp.FilterCriteria.TypeFilter.SignFilter,
                                                            fieldsTemp.Value,
                                                            numberParameter,
                                                            cmd)
                                );
                        }

                        numberParameter++;
                    }

                    cmd.CommandText = sql.ToString();

                    if (cmd.Connection.State != ConnectionState.Open)
                    {
                        cmd.Connection.Open();
                    }

                    using (var dataReader = cmd.ExecuteReader())
                    {
                        while (dataReader.Read())
                        {
                            var dataRow = new ExpandoObject() as IDictionary <string, object>;
                            for (var iFiled = 0; iFiled < dataReader.FieldCount; iFiled++)
                            {
                                dataRow.Add(
                                    dataReader.GetName(iFiled),
                                    dataReader.IsDBNull(iFiled) ? null : dataReader[iFiled] // use null instead of {}
                                    );
                            }

                            retObject.Add((ExpandoObject)dataRow);
                        }
                    }
                }
            }

            return(retObject);
        }
コード例 #3
0
 public void InsertOrUpdate(FilterExecution entity)
 {
     _filterExecutionDao.InsertOrUpdate(entity);
 }