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"); } }
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"); } }
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"); } }
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"); } }
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"); } }