Пример #1
0
        public async Task <ActionResult <object> > Get()
        {
            var correlationId = HttpContext.TraceIdentifier;
            // информация для логирования
            var preLog = correlationId + " | " + ClassName + "Controller." + ExtensionProvider.GetCallerMethodName();

            // логируем начало выполнения метода
            Logging.Trace(preLog + " START");
            // выполнение метода
            try
            {
                // логируем запрос
                Logging.Request(preLog + "(Запрос метода.)");
                // получаем данные из базы данных
                var data = await DataProvider.GetAsync(Asd_E_Type.Department, correlationId);

                // логируем ответ
                Logging.Response(preLog + "(Ответ метода.)" + JsonConvert.SerializeObject(data, Formatting.Indented).ToTabString());
                // возвращаем ответ
                var code = data == null ? Asd_E_ResponseCode.GetError : Asd_E_ResponseCode.Success;
                return(new Asd_Response(code, null, data, correlationId));
            }
            catch (Exception ex)
            {
                // логируем исключение
                Logging.Exception(preLog + "(" + ex.Message + ")" + ex.StackTrace.ToTabString());
                // возвращаем ответ
                return(new Asd_Response(Asd_E_ResponseCode.GetException, ex.Message, null, correlationId));
            }
            finally
            {
                // логируем окончание выполнения метода
                Logging.Trace(preLog + " END");
            }
        }
Пример #2
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");
            }
        }
Пример #3
0
        public static void Local()
        {
            // информация для логирования
            var preLog = Guid.Empty + " | " + ClassName + "." + ExtensionProvider.GetCallerMethodName();

            try
            {
                using var context = new LocalDatabaseContext();
                // мигрируем базу данных
                context.Database.Migrate();
            }
            catch (Exception ex)
            {
                // логируем исключение
                Logging.Exception(preLog + "(" + ex.Message + ")" + ex.StackTrace.ToTabString());
            }
        }
Пример #4
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");
            }
        }
Пример #5
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");
            }
        }
Пример #6
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");
            }
        }
Пример #7
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");
            }
        }
Пример #8
0
        public static void LocalData()
        {
            // информация для логирования
            var preLog = Guid.Empty + " | " + ClassName + "." + ExtensionProvider.GetCallerMethodName();

            try
            {
                using var context = new LocalDatabaseContext();

                var department1 = new Department {
                    Name = "Shop"
                };
                context.Departments.Add(department1);
                var department2 = new Department {
                    Name = "Logistics"
                };
                context.Departments.Add(department2);
                var department3 = new Department {
                    Name = "Orders"
                };
                context.Departments.Add(department3);
                var department4 = new Department {
                    Name = "Marketing"
                };
                context.Departments.Add(department4);
                var department5 = new Department {
                    Name = "Warehouse"
                };
                context.Departments.Add(department5);

                context.SaveChanges();

                var employee1 = new Employee {
                    Name = "Harry", Salary = 5000, DepartmentId = department1.Id
                };
                context.Employees.Add(employee1);
                var employee2 = new Employee {
                    Name = "Oliver", Salary = 4500, DepartmentId = department2.Id
                };
                context.Employees.Add(employee2);
                var employee3 = new Employee {
                    Name = "Jack", Salary = 7000, DepartmentId = department3.Id
                };
                context.Employees.Add(employee3);
                var employee4 = new Employee {
                    Name = "Charlie", Salary = 2000, DepartmentId = department4.Id
                };
                context.Employees.Add(employee4);
                var employee5 = new Employee {
                    Name = "Thomas", Salary = 3500, DepartmentId = department5.Id
                };
                context.Employees.Add(employee5);
                var employee6 = new Employee {
                    Name = "Jacob", Salary = 1000, DepartmentId = department1.Id
                };
                context.Employees.Add(employee6);
                var employee7 = new Employee {
                    Name = "Alfie", Salary = 6000, DepartmentId = department2.Id
                };
                context.Employees.Add(employee7);
                var employee8 = new Employee {
                    Name = "Riley", Salary = 5000, DepartmentId = department3.Id
                };
                context.Employees.Add(employee8);
                var employee9 = new Employee {
                    Name = "William", Salary = 4500, DepartmentId = department4.Id
                };
                context.Employees.Add(employee9);
                var employee10 = new Employee {
                    Name = "James", Salary = 7000, DepartmentId = department5.Id
                };
                context.Employees.Add(employee10);
                var employee11 = new Employee {
                    Name = "Amelia", Salary = 2500, DepartmentId = department1.Id
                };
                context.Employees.Add(employee11);
                var employee12 = new Employee {
                    Name = "Olivia", Salary = 3000, DepartmentId = department2.Id
                };
                context.Employees.Add(employee12);
                var employee13 = new Employee {
                    Name = "Jessica", Salary = 5000, DepartmentId = department3.Id
                };
                context.Employees.Add(employee13);
                var employee14 = new Employee {
                    Name = "Emily", Salary = 4500, DepartmentId = department4.Id
                };
                context.Employees.Add(employee14);
                var employee15 = new Employee {
                    Name = "Lily", Salary = 7000, DepartmentId = department5.Id
                };
                context.Employees.Add(employee15);
                var employee16 = new Employee {
                    Name = "Ava", Salary = 5000, DepartmentId = department1.Id
                };
                context.Employees.Add(employee16);
                var employee17 = new Employee {
                    Name = "Heather", Salary = 5000, DepartmentId = department2.Id
                };
                context.Employees.Add(employee17);
                var employee18 = new Employee {
                    Name = "Sophie", Salary = 3500, DepartmentId = department3.Id
                };
                context.Employees.Add(employee18);
                var employee19 = new Employee {
                    Name = "Mia", Salary = 3000, DepartmentId = department4.Id
                };
                context.Employees.Add(employee19);
                var employee20 = new Employee {
                    Name = "Isabella", Salary = 3500, DepartmentId = department5.Id
                };
                context.Employees.Add(employee20);
                var employee21 = new Employee {
                    Name = "Jack", Salary = 1000, DepartmentId = department1.Id
                };
                context.Employees.Add(employee21);
                var employee22 = new Employee {
                    Name = "James", Salary = 1500, DepartmentId = department2.Id
                };
                context.Employees.Add(employee22);
                var employee23 = new Employee {
                    Name = "Daniel", Salary = 5000, DepartmentId = department3.Id
                };
                context.Employees.Add(employee23);
                var employee24 = new Employee {
                    Name = "Harry", Salary = 5000, DepartmentId = department4.Id
                };
                context.Employees.Add(employee24);
                var employee25 = new Employee {
                    Name = "Charlie", Salary = 4500, DepartmentId = department5.Id
                };
                context.Employees.Add(employee25);
                var employee26 = new Employee {
                    Name = "Ethan", Salary = 7000, DepartmentId = department1.Id
                };
                context.Employees.Add(employee26);
                var employee27 = new Employee {
                    Name = "Matthew", Salary = 7000, DepartmentId = department2.Id
                };
                context.Employees.Add(employee27);
                var employee28 = new Employee {
                    Name = "Ryen", Salary = 5000, DepartmentId = department3.Id
                };
                context.Employees.Add(employee28);
                var employee29 = new Employee {
                    Name = "Riley", Salary = 6500, DepartmentId = department4.Id
                };
                context.Employees.Add(employee29);
                var employee30 = new Employee {
                    Name = "Noah", Salary = 3500, DepartmentId = department5.Id
                };
                context.Employees.Add(employee30);

                context.SaveChanges();
            }
            catch (Exception ex)
            {
                // логируем исключение
                Logging.Exception(preLog + "(" + ex.Message + ")" + ex.StackTrace.ToTabString());
            }
        }