Beispiel #1
0
 /// <summary>
 /// On application start
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 public static void OnQueryExecutedHandler(object sender, ExecutedQueryEventArgs args)
 {
     if (args == null)
     {
         return;
     }
     if (args.Completed)
     {
         Console.WriteLine($"Query {args.Query} executed in {args.Elapsed} ms");
     }
     else
     {
         Console.ForegroundColor = ConsoleColor.Red;
         Console.WriteLine($"Query {args.Query} throw an exception: {args.Exception}");
         Console.ForegroundColor = ConsoleColor.White;
     }
 }
Beispiel #2
0
        /// <summary>
        /// Get pagination request
        /// </summary>
        /// <param name="dbContext"></param>
        /// <param name="viewModel"></param>
        /// <param name="page"></param>
        /// <param name="perPage"></param>
        /// <param name="queryString"></param>
        /// <returns></returns>
        public static ResultModel <PaginationResponseViewModel> GetPaginationResult(this IEntityContext dbContext, EntityViewModel viewModel, uint page, uint perPage = 10, string queryString = null)
        {
            var response = new ResultModel <PaginationResponseViewModel>();
            var watch    = new Stopwatch();

            watch.Start();
            var evArgs = new ExecutedQueryEventArgs();

            response.Result = new PaginationResponseViewModel
            {
                ViewModel = viewModel,
                Page      = page,
                PerPage   = perPage,
            };

            if (viewModel == null)
            {
                return(response);
            }

            try
            {
                var sqlQuery = QueryBuilder.GetPaginationByFilters(viewModel, page, perPage, queryString);
                evArgs.Query = sqlQuery;
                var result       = EntitiesFromSql(dbContext, sqlQuery, new Dictionary <string, object>()).ToList();
                var countRequest = dbContext.GetCountByFilters(viewModel);
                if (countRequest.IsSuccess)
                {
                    response.Result.Total = (uint)countRequest.Result;
                }
                response.Result.ViewModel.Values = result;
                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                watch.Stop();
                evArgs.Elapsed   = watch.ElapsedMilliseconds;
                evArgs.Completed = false;
                evArgs.Exception = ex;
                EntityEvents.SqlQuery.QueryExecuted(evArgs);
                response.Errors.Add(new ErrorModel("_ex", ex.ToString()));
                return(response);
            }

            return(response);
        }
Beispiel #3
0
 /// <summary>
 /// Rise new query executed
 /// </summary>
 /// <param name="e"></param>
 public static void QueryExecuted(ExecutedQueryEventArgs e) => SystemEvents.InvokeEvent(null, OnQueryExecuted, e, nameof(OnQueryExecuted));
Beispiel #4
0
        public static ResultModel <EntityViewModel> GetEntityByParams(this IEntityContext dbContext,
                                                                      EntityViewModel viewModel)
        {
            var returnModel = new ResultModel <EntityViewModel>
            {
                IsSuccess = false,
                Result    = new EntityViewModel {
                    Includes = new List <EntityViewModel>()
                }
            };
            var watch  = new Stopwatch();
            var evArgs = new ExecutedQueryEventArgs();

            watch.Start();
            //For Add Single Field To Parent if no Exist
            viewModel = AddFieldForSingle(viewModel);

            returnModel.Result = viewModel;

            if (viewModel == null)
            {
                return(returnModel);
            }

            try
            {
                var finalResult = new List <Dictionary <string, object> >();

                if (viewModel.Values != null && viewModel.Values.Count > 0)
                {
                    foreach (var listTableValue in viewModel.Values)
                    {
                        var sqlQuery = QueryBuilder.GetByColumnParameterQuery(viewModel, listTableValue);
                        evArgs.Query = sqlQuery;
                        var result = EntitiesFromSql(dbContext, sqlQuery, listTableValue).ToList();
                        finalResult.AddRange(result);
                    }
                }
                else
                {
                    var parameters = new Dictionary <string, object>();
                    var sqlQuery   = QueryBuilder.GetByColumnParameterQuery(viewModel, parameters);
                    var result     = EntitiesFromSql(dbContext, sqlQuery, parameters).ToList();
                    finalResult.AddRange(result);
                }

                returnModel.Result.Values = finalResult;
                returnModel.IsSuccess     = true;
            }
            catch (Exception ex)
            {
                evArgs.Exception = ex;
                evArgs.Completed = false;
                watch.Stop();
                evArgs.Elapsed = watch.ElapsedMilliseconds;
                EntityEvents.SqlQuery.QueryExecuted(evArgs);
                Debug.WriteLine(ex);
                return(returnModel);
            }

            var values = GetRecursiveSingle(dbContext, viewModel, returnModel.Result.Values);

            returnModel.Result.Values = values;
            watch.Stop();
            evArgs.Elapsed = watch.ElapsedMilliseconds;
            EntityEvents.SqlQuery.QueryExecuted(evArgs);
            return(returnModel);
        }