Esempio n. 1
0
        public static async Task <bool> DeleteAsync(Asd_E_Type type, Guid id, string correlationId)
        {
            // информация для логирования
            var preLog = correlationId + " | " + ClassName + "." + type + "." + ExtensionProvider.GetCallerMethodName();

            // логируем начало выполнения метода
            Logging.Trace(preLog + " START");
            // выполнение метода
            try
            {
                // логируем запрос
                Logging.Request(preLog + "(Запрос метода. Исходные данные: Id = " + id + ")");
                // создаем объект ответа
                bool response;
                // удаляем данные из базы данных
                await using (var context = new LocalDatabaseContext())
                {
                    switch (type)
                    {
                    case Asd_E_Type.Employee:
                        var employee = await context.Employees.FindAsync(id);

                        context.Employees.Remove(employee);
                        response = await context.SaveChangesAsync() > 0;

                        break;

                    case Asd_E_Type.Department:
                        var department = await context.Departments.FindAsync(id);

                        context.Departments.Remove(department);
                        response = await context.SaveChangesAsync() > 0;

                        break;

                    default:
                        response = false;
                        break;
                    }
                }
                // логируем ответ
                Logging.Response(preLog + "(Ответ метода: " + response + ")");
                // возвращаем ответ
                return(response);
            }
            catch (Exception ex)
            {
                // логируем исключение
                Logging.Exception(preLog + "(" + ex.Message + ")" + ex.StackTrace.ToTabString());
                // возвращаем ответ
                return(false);
            }
            finally
            {
                // логируем окончание выполнения метода
                Logging.Trace(preLog + " END");
            }
        }
Esempio n. 2
0
        public static async Task <bool> FindAsync(Asd_E_Type type, Guid id, string correlationId)
        {
            // информация для логирования
            var preLog = correlationId + " | " + ClassName + "." + type + "." + ExtensionProvider.GetCallerMethodName();

            // логируем начало выполнения метода
            Logging.Trace(preLog + " START");
            // выполнение метода
            try
            {
                // логируем запрос
                Logging.Request(preLog + "(Запрос метода. Исходные данные: Id = " + id + ")");
                // создаем объект ответа
                bool response;
                // получаем данные из базы данных
                await using (var context = new LocalDatabaseContext())
                {
                    response = type switch
                    {
                        Asd_E_Type.Employee => await context.Employees.FindAsync(id) != null,
                        Asd_E_Type.Department => await context.Departments.FindAsync(id) != null,
                        _ => false
                    };
                }
                // логируем ответ
                Logging.Response(preLog + "(Ответ метода: " + response + ")");
                // возвращаем ответ
                return(response);
            }
            catch (Exception ex)
            {
                // логируем исключение
                Logging.Exception(preLog + "(" + ex.Message + ")" + ex.StackTrace.ToTabString());
                // возвращаем ответ
                return(false);
            }
            finally
            {
                // логируем окончание выполнения метода
                Logging.Trace(preLog + " END");
            }
        }
Esempio n. 3
0
        public static async Task <bool> PutAsync <T>(Asd_E_Type type, Guid id, T request, string correlationId)
        {
            // информация для логирования
            var preLog = correlationId + " | " + ClassName + "." + type + "." + ExtensionProvider.GetCallerMethodName();

            // логируем начало выполнения метода
            Logging.Trace(preLog + " START");
            // выполнение метода
            try
            {
                // логируем запрос
                Logging.Request(preLog + "(Запрос метода. Исходные данные: Id = " + id + ")" + JsonConvert.SerializeObject(request, Formatting.Indented).ToTabString());
                // создаем объект ответа
                bool response;
                // обновляем данные в базе данных
                await using (var context = new LocalDatabaseContext())
                {
                    context.Entry(request).State = EntityState.Modified;
                    response = await context.SaveChangesAsync() > 0;
                }
                // логируем ответ
                Logging.Response(preLog + "(Ответ метода: " + response + ")");
                // возвращаем ответ
                return(response);
            }
            catch (Exception ex)
            {
                // логируем исключение
                Logging.Exception(preLog + "(" + ex.Message + ")" + ex.StackTrace.ToTabString());
                // возвращаем ответ
                return(false);
            }
            finally
            {
                // логируем окончание выполнения метода
                Logging.Trace(preLog + " END");
            }
        }
Esempio n. 4
0
        public static async Task <object> GetAsync(Asd_E_Type type, string correlationId)
        {
            // информация для логирования
            var preLog = correlationId + " | " + ClassName + "." + type + "." + ExtensionProvider.GetCallerMethodName();

            // логируем начало выполнения метода
            Logging.Trace(preLog + " START");
            // выполнение метода
            try
            {
                // логируем запрос
                Logging.Request(preLog + "(Запрос метода.)");
                // создаем объект ответа
                IEnumerable <object> response;
                // получаем данные из базы данных
                await using (var context = new LocalDatabaseContext())
                {
                    response = type switch
                    {
                        Asd_E_Type.Employee => await context.Employees
                        .Select(i => new
                        {
                            i.Id,
                            i.Name,
                            Department = new
                            {
                                i.Department.Id,
                                i.Department.Name
                            }
                        }).ToListAsync(),
                        Asd_E_Type.Department => await context.Departments
                        .Include(i => i.Employees)
                        .Select(i => new
                        {
                            i.Id,
                            i.Name,
                            i.Employees.Count,
                            Avg       = i.Employees.Sum(j => j.Salary) / i.Employees.Count,
                            Employees = i.Employees
                                        .Select(j => new
                            {
                                j.Id,
                                j.Name,
                                j.Salary
                            })
                        }).ToListAsync(),
                        _ => null
                    };
                }
                // логируем ответ
                Logging.Response(preLog + "(Ответ метода.)" + JsonConvert.SerializeObject(response, Formatting.Indented).ToTabString());
                // возвращаем ответ
                return(response);
            }
            catch (Exception ex)
            {
                // логируем исключение
                Logging.Exception(preLog + "(" + ex.Message + ")" + ex.StackTrace.ToTabString());
                // возвращаем ответ
                return(null);
            }
            finally
            {
                // логируем окончание выполнения метода
                Logging.Trace(preLog + " END");
            }
        }
Esempio n. 5
0
        public static async Task <Guid?> PostAsync <T>(Asd_E_Type type, T request, string correlationId)
        {
            // информация для логирования
            var preLog = correlationId + " | " + ClassName + "." + type + "." + ExtensionProvider.GetCallerMethodName();

            // логируем начало выполнения метода
            Logging.Trace(preLog + " START");
            // выполнение метода
            try
            {
                // логируем запрос
                Logging.Request(preLog + "(Запрос метода. Исходные данные.)" + JsonConvert.SerializeObject(request, Formatting.Indented).ToTabString());
                // создаем объект ответа
                Guid response;
                // добавляем данные в базу данных
                await using (var context = new LocalDatabaseContext())
                {
                    switch (type)
                    {
                    case Asd_E_Type.Employee:
                        var employee = request as Employee;
                        await context.Employees.AddAsync(employee ?? throw new InvalidOperationException());

                        await context.SaveChangesAsync();

                        response = await context.Employees.Select(i => i.Id).FirstOrDefaultAsync(i => i == employee.Id);

                        break;

                    case Asd_E_Type.Department:
                        var department = request as Department;
                        await context.Departments.AddAsync(department ?? throw new InvalidOperationException());

                        await context.SaveChangesAsync();

                        response = await context.Departments.Select(i => i.Id).FirstOrDefaultAsync(i => i == department.Id);

                        break;

                    default:
                        response = Guid.Empty;
                        break;
                    }
                }
                // логируем ответ
                Logging.Response(preLog + "(Ответ метода: Id = " + response + ")");
                // возвращаем ответ
                return(response);
            }
            catch (Exception ex)
            {
                // логируем исключение
                Logging.Exception(preLog + "(" + ex.Message + ")" + ex.StackTrace.ToTabString());
                // возвращаем ответ
                return(null);
            }
            finally
            {
                // логируем окончание выполнения метода
                Logging.Trace(preLog + " END");
            }
        }