public BaseResponse AddReport(ReportRequest request) { return(GetResponse(() => { var response = new BaseResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { var family = db.Families.Where(x => x.Id == request.FamilyId).FirstOrDefault(); var person = db.Persons.Where(x => x.FamilyId == request.FamilyId && x.Id == request.PersonId).FirstOrDefault(); var model = new Report { Name = request.Name, Text = request.Text, Date = request.Date, Family = family, Person = person }; db.Reports.Add(model); db.SaveChanges(); } } catch { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.BAD_REQUEST; } return response; })); }
public ListChangeMoneysResponse GetResultForTimePeriod(GetResultsForTimePeriodRequest request) { return(GetResponse(() => { var response = new ListChangeMoneysResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { if (request.Start == null && request.End == null) { response.BaseMessage = Shared.Constants.BAD_REQUEST; response.IsSuccess = false; } else { response.ChangeMoneys = db.ChangeMoneys.Where(x => (x.PersonId == request.PersonId && x.FamilyId == request.FamilyId) && (x.Date >= request.Start && x.Date <= request.End) && x.Type == request.Type).ToList(); } } } catch { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.BAD_REQUEST; } return response; })); }
public ListPursesResponse GetPursesByCurrency(GetPursesByCurrencyRequest request) { return(GetResponse(() => { var response = new ListPursesResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { if (request.PersonId == null && request.FamilyId == null) { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.NEED_AUTHORIZE; } else { response.Purses = db.Purses.Where(x => (x.FamilyId == request.FamilyId && x.PersonId == request.PersonId && x.CurrencyId == request.CurrencyId) || (x.FamilyId == request.FamilyId && x.CurrencyId == request.CurrencyId && x.PersonId == null)).ToList(); } } } catch { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.BAD_REQUEST; } return response; })); }
public BaseResponse AddInviteKey(InviteKeyRequest request) { return(GetResponse(() => { var response = new BaseResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { var family = db.Families.Where(x => x.Id == request.FamilyId).FirstOrDefault(); var inviteKey = new InviteKey { Key = request.Key, Family = family }; db.InviteKeys.Add(inviteKey); db.SaveChanges(); } } catch { response.BaseIsSuccess = false; response.BaseMessage = Constants.BAD_REQUEST; } return response; })); }
public ListChangeMoneysResponse GetAllIncomesOrExpenses(BaseRequest request) { return(GetResponse(() => { var response = new ListChangeMoneysResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { if (request.FamilyId == null && request.PersonId == null) { response.BaseMessage = Shared.Constants.NEED_AUTHORIZE; response.IsSuccess = false; } else { response.ChangeMoneys = db.ChangeMoneys.Where(x => x.FamilyId == request.FamilyId && x.PersonId == request.PersonId).ToList(); } } } catch { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.BAD_REQUEST; } return response; })); }
public ListReportsResponse GetReports(BaseRequest request) { return(GetResponse(() => { var response = new ListReportsResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { if (request.PersonId == null && request.FamilyId == null) { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.BAD_REQUEST; } else { response.Reports = request.PersonId == null ? db.Reports.Where(x => x.FamilyId == request.FamilyId).ToList() : db.Reports.Where(x => x.FamilyId == request.FamilyId && x.PersonId == request.PersonId).ToList(); } } } catch { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.BAD_REQUEST; } return response; })); }
public LoginResponse Login(LoginRequest request) { return(GetResponse(() => { var response = new LoginResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { if (request.Login == null || request.Password == null) { response.BaseIsSuccess = false; response.BaseMessage = "Помилка, пусті дані"; } else { var currentPerson = db.Persons.Where(x => x.Login == request.Login && x.Password == request.Password).FirstOrDefault(); var heresFamily = db.Families.Where(x => x.Id == currentPerson.FamilyId).FirstOrDefault(); if (currentPerson == null) { response.BaseIsSuccess = false; response.BaseMessage = "Помилка, нікого не знайдено"; } else { response.PersonName = currentPerson.Name; response.Role = currentPerson.Role; response.FamilyId = currentPerson.FamilyId; response.PersonId = currentPerson.Id; response.FamilyName = heresFamily.Name; var identity = GetIdentity(currentPerson); var now = DateTime.UtcNow; var jwt = new JwtSecurityToken( issuer: AuthOptions.ISSUER, audience: AuthOptions.AUDIENCE, notBefore: now, claims: identity.Claims, expires: DateTime.Now.AddYears(10), signingCredentials: new SigningCredentials(AuthOptions.GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256)); var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt); response.Token = encodedJwt; } } } } catch { response.BaseIsSuccess = false; response.BaseMessage = Constants.BAD_REQUEST; } return response; })); }
public BaseResponse RegistrationNewWithKey(RegistrationRequest request) { return(GetResponse(() => { var response = new BaseResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { if (request == null) { response.BaseIsSuccess = false; response.BaseMessage = "Помилка, пусті дані"; } else if (request.Key != null) { if (!db.InviteKeys.Any(x => x.Key == request.Key)) { response.BaseIsSuccess = false; response.BaseMessage = "Помилка, Невірний ключ"; } else { var familyId = db.InviteKeys.Where(x => x.Key == request.Key).FirstOrDefault().FamilyId; var key = db.InviteKeys.Where(x => x.Key == request.Key).FirstOrDefault(); db.InviteKeys.Remove(key); var family = db.Families.Where(x => x.Id == familyId).FirstOrDefault(); var person = new Person { Name = request.PersonName, Role = "U", Family = family, Login = request.Login, Password = request.Password }; db.Persons.Add(person); db.SaveChanges(); } } } } catch { response.BaseIsSuccess = false; response.BaseMessage = Constants.BAD_REQUEST; } return response; })); }
public BaseResponse UpdatePurpose(UpdatePurposeRequest request) { return(GetResponse(() => { var response = new BaseResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { var purpose = db.Purposes.Where(x => x.Id == request.PurposeId).FirstOrDefault(); var purse = db.Purses.Where(x => x.Id == request.PurseId).FirstOrDefault(); if (purse.Size <= request.NewSize) { response.BaseIsSuccess = false; response.BaseMessage = "Недостатньо коштів"; } if (purpose.CurrentSize + request.NewSize > purpose.FinalSize) { response.BaseIsSuccess = false; response.BaseMessage = "Перевищення ліміту"; } if (purpose != null && purse != null) { purse.Size -= request.NewSize; purpose.CurrentSize += request.NewSize; db.Purses.Update(purse); db.Purposes.Update(purpose); db.SaveChanges(); } else { response.BaseIsSuccess = false; response.BaseMessage = "Помилка додавання"; } } } catch { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.BAD_REQUEST; } return response; })); }
public BaseResponse AddPurse(PurseRequest request) { return(GetResponse(() => { var response = new BaseResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { if (request == null) { response.BaseIsSuccess = false; response.BaseMessage = "Не можна додати порожній гаманець"; } else if (db.Purses.Any(x => x.Name == request.Name)) { response.BaseIsSuccess = false; response.BaseMessage = "Гаманець з такою назвою вже існує"; } else { var currency = db.Currencies.Where(x => x.Id == request.CurrencyId).FirstOrDefault(); var model = new Purse { Name = request.Name, Size = request.Size, Currency = currency, FamilyId = request.FamilyId, PersonId = request.PersonId }; db.Purses.Add(model); db.SaveChanges(); } } } catch (Exception ex) { response.BaseIsSuccess = false; response.BaseMessage = ex.Message; } return response; })); }
public ListChangeMoneysResponse GetResultForCurrency(GetResultForCurrencyRequest request) { return(GetResponse(() => { var response = new ListChangeMoneysResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { response.ChangeMoneys = db.ChangeMoneys.Where(x => x.PersonId == request.PersonId && x.FamilyId == request.FamilyId && request.CurrencyId == x.CurrencyId && request.Type == x.Type && x.Date <= request.End && x.Date >= request.Start).ToList(); } } catch { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.BAD_REQUEST; } return response; })); }
public ListCategoriesResponse GetCategories(BaseRequest request) { return(GetResponse(() => { var response = new ListCategoriesResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { response.Categories = db.Categories.Where(x => x.FamilyId == request.FamilyId).ToList(); } } catch { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.BAD_REQUEST; } return response; })); }
public NameResponse GetName(int id, int type) { return(GetResponse(() => { var response = new NameResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { response.Name = type == 0 ? db.Families.Where(x => x.Id == id).FirstOrDefault().Name : db.Persons.Where(x => x.Id == id).FirstOrDefault().Name; } } catch { response.BaseIsSuccess = false; response.BaseMessage = Constants.BAD_REQUEST; } return response; })); }
public BaseResponse AddCategory(CategoryRequest request) { return(GetResponse(() => { var response = new BaseResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { if (request.Category == default) { response.BaseIsSuccess = false; response.BaseMessage = "Не можна додати порожню категорію"; } else if (db.Categories.Any(x => x.Name == request.Category.Name && x.FamilyId == request.Category.FamilyId)) { response.BaseIsSuccess = false; response.BaseMessage = "Така категорія вже існує"; } else { var family = db.Families.Where(x => x.Id == request.Category.FamilyId).FirstOrDefault(); var model = new Category { Name = request.Category.Name, Family = family }; db.Categories.Add(model); db.SaveChanges(); } } } catch { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.BAD_REQUEST; } return response; })); }
public BaseResponse AddPurpose(PurposeRequest request) { return(GetResponse(() => { var response = new BaseResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { if (db.Purposes.Any(x => x.Name == request.Name && x.FamilyId == request.FamilyId)) { response.BaseIsSuccess = false; response.BaseMessage = "Така ціль заощадження вже є"; } else { var currency = db.Currencies.Where(x => x.Id == request.CurrencyId).FirstOrDefault(); var model = new Purpose { Name = request.Name, FinalSize = request.FinalSize, CurrentSize = 0, Currency = currency, FamilyId = request.FamilyId, PersonId = request.PersonId }; db.Purposes.Add(model); db.SaveChanges(); } } } catch (Exception ex) { response.BaseIsSuccess = false; response.BaseMessage = ex.InnerException.Message; } return response; })); }
public BaseResponse DeleteCategory(CategoryRequest request) { return(GetResponse(() => { var response = new BaseResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { var category = db.Categories.Where(x => x.Id == request.Category.Id).FirstOrDefault(); db.Categories.Remove(category); db.SaveChanges(); } } catch { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.BAD_REQUEST; } return response; })); }
public BaseResponse DeletePurse(PurseRequest request) { return(GetResponse(() => { var response = new BaseResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { //var purse = db.Purses.Where(x => x.Id == request.Purse.Id).FirstOrDefault(); //db.Purses.Remove(purse); //db.SaveChanges(); } } catch { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.BAD_REQUEST; } return response; })); }
public BaseResponse DeleteReport(DeleteReportRequest request) { return(GetResponse(() => { var response = new BaseResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { var report = db.Reports.Where(x => x.Id == request.ReportId && x.FamilyId == request.FamilyId).FirstOrDefault(); db.Reports.Remove(report); db.SaveChanges(); } } catch { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.BAD_REQUEST; } return response; })); }
public ChangeMoneyResponse GetLargestIncomeOrExpense(GetIncomesOrExpensesRequest request) { return(GetResponse(() => { var response = new ChangeMoneyResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { if (request.FamilyId == null && request.PersonId == null) { response.BaseMessage = Shared.Constants.NEED_AUTHORIZE; response.IsSuccess = false; } else { if (request.PersonId != null || request.FamilyId != null) { response.ChangeMoney = db.ChangeMoneys.Where(x => x.Type == request.Type && (x.FamilyId == request.FamilyId || x.PersonId == request.PersonId)).Max(); } else { response.ChangeMoney = request.FamilyId == null ? db.ChangeMoneys.Where(x => x.PersonId == request.PersonId && x.Type == request.Type).Max(): db.ChangeMoneys.Where(x => x.FamilyId == request.FamilyId && x.Type == request.Type).Max(); } } } } catch { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.BAD_REQUEST; } return response; })); }
public DataByCategotyToChartResponse GetDataByCategoryToChart(BaseRequest request) { return(GetResponse(() => { var response = new DataByCategotyToChartResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { var incomes = new Dictionary <string, int>(); var expenses = new Dictionary <string, int>(); var changeMoneysIncome = db.ChangeMoneys.Where(x => x.FamilyId == request.FamilyId && x.PersonId == request.PersonId && x.Type == "I" && x.CurrencyId == 1).ToList(); var changeMoneysExpense = db.ChangeMoneys.Where(x => x.FamilyId == request.FamilyId && x.PersonId == request.PersonId && x.Type == "E" && x.CurrencyId == 1).ToList(); foreach (var changeMoney in changeMoneysIncome) { var category = db.Categories.Where(x => x.FamilyId == request.FamilyId && x.Id == changeMoney.CategoryId).FirstOrDefault(); if (incomes.ContainsKey(category.Name)) { continue; } else { var sum = changeMoneysIncome.Where(x => x.CategoryId == category.Id).Sum(x => x.Size); incomes.Add(category.Name, sum); } } foreach (var changeMoney in changeMoneysExpense) { var category = db.Categories.Where(x => x.FamilyId == request.FamilyId && x.Id == changeMoney.CategoryId).FirstOrDefault(); if (expenses.ContainsKey(category.Name)) { continue; } else { var sum = changeMoneysExpense.Where(x => x.CategoryId == category.Id).Sum(x => x.Size); expenses.Add(category.Name, sum); } } response.IncomesUAH = incomes; response.ExpensesUAH = expenses; incomes = new Dictionary <string, int>(); expenses = new Dictionary <string, int>(); changeMoneysIncome = db.ChangeMoneys.Where(x => x.FamilyId == request.FamilyId && x.PersonId == request.PersonId && x.Type == "I" && x.CurrencyId == 2).ToList(); changeMoneysExpense = db.ChangeMoneys.Where(x => x.FamilyId == request.FamilyId && x.PersonId == request.PersonId && x.Type == "E" && x.CurrencyId == 2).ToList(); foreach (var changeMoney in changeMoneysIncome) { var category = db.Categories.Where(x => x.FamilyId == request.FamilyId && x.Id == changeMoney.CategoryId).FirstOrDefault(); if (incomes.ContainsKey(category.Name)) { continue; } else { var sum = changeMoneysIncome.Where(x => x.CategoryId == category.Id).Sum(x => x.Size); incomes.Add(category.Name, sum); } } foreach (var changeMoney in changeMoneysExpense) { var category = db.Categories.Where(x => x.FamilyId == request.FamilyId && x.Id == changeMoney.CategoryId).FirstOrDefault(); if (expenses.ContainsKey(category.Name)) { continue; } else { var sum = changeMoneysExpense.Where(x => x.CategoryId == category.Id).Sum(x => x.Size); expenses.Add(category.Name, sum); } } response.IncomesUSD = incomes; response.ExpensesUSD = expenses; incomes = new Dictionary <string, int>(); expenses = new Dictionary <string, int>(); changeMoneysIncome = db.ChangeMoneys.Where(x => x.FamilyId == request.FamilyId && x.PersonId == request.PersonId && x.Type == "I" && x.CurrencyId == 3).ToList(); changeMoneysExpense = db.ChangeMoneys.Where(x => x.FamilyId == request.FamilyId && x.PersonId == request.PersonId && x.Type == "E" && x.CurrencyId == 3).ToList(); foreach (var changeMoney in changeMoneysIncome) { var category = db.Categories.Where(x => x.FamilyId == request.FamilyId && x.Id == changeMoney.CategoryId).FirstOrDefault(); if (incomes.ContainsKey(category.Name)) { continue; } else { var sum = changeMoneysIncome.Where(x => x.CategoryId == category.Id).Sum(x => x.Size); incomes.Add(category.Name, sum); } } foreach (var changeMoney in changeMoneysExpense) { var category = db.Categories.Where(x => x.FamilyId == request.FamilyId && x.Id == changeMoney.CategoryId).FirstOrDefault(); if (expenses.ContainsKey(category.Name)) { continue; } else { var sum = changeMoneysExpense.Where(x => x.CategoryId == category.Id).Sum(x => x.Size); expenses.Add(category.Name, sum); } } response.IncomesEUR = incomes; response.ExpensesEUR = expenses; incomes = new Dictionary <string, int>(); expenses = new Dictionary <string, int>(); changeMoneysIncome = db.ChangeMoneys.Where(x => x.FamilyId == request.FamilyId && x.PersonId == request.PersonId && x.Type == "I" && x.CurrencyId == 4).ToList(); changeMoneysExpense = db.ChangeMoneys.Where(x => x.FamilyId == request.FamilyId && x.PersonId == request.PersonId && x.Type == "E" && x.CurrencyId == 4).ToList(); foreach (var changeMoney in changeMoneysIncome) { var category = db.Categories.Where(x => x.FamilyId == request.FamilyId && x.Id == changeMoney.CategoryId).FirstOrDefault(); if (incomes.ContainsKey(category.Name)) { continue; } else { var sum = changeMoneysIncome.Where(x => x.CategoryId == category.Id).Sum(x => x.Size); incomes.Add(category.Name, sum); } } foreach (var changeMoney in changeMoneysExpense) { var category = db.Categories.Where(x => x.FamilyId == request.FamilyId && x.Id == changeMoney.CategoryId).FirstOrDefault(); if (expenses.ContainsKey(category.Name)) { continue; } else { var sum = changeMoneysExpense.Where(x => x.CategoryId == category.Id).Sum(x => x.Size); expenses.Add(category.Name, sum); } } response.IncomesPLZ = incomes; response.ExpensesPLZ = expenses; } } catch (Exception ex) { response.BaseIsSuccess = false; response.BaseMessage = ex.Message + "; Inner: " + ex.InnerException.Message; } return response; })); }
public BaseResponse RegistrationNew(RegistrationRequest request) { return(GetResponse(() => { var response = new BaseResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { if (request == null) { response.BaseIsSuccess = false; response.BaseMessage = "Помилка, пусті дані"; } else { var family = new Family { Name = request.FamilyName }; db.Families.Add(family); db.SaveChanges(); var familyFormContext = db.Families.Where(x => x.Name == family.Name).FirstOrDefault(); var uah = db.Currencies.Where(x => x.Id == 1).FirstOrDefault(); var usd = db.Currencies.Where(x => x.Id == 2).FirstOrDefault(); var eur = db.Currencies.Where(x => x.Id == 3).FirstOrDefault(); var plz = db.Currencies.Where(x => x.Id == 4).FirstOrDefault(); db.Purses.Add(new Purse { Name = "Гаманець з гривнями", Size = 0, Currency = uah, Family = familyFormContext, PersonId = null }); db.Purses.Add(new Purse { Name = "Гаманець з доларами", Size = 0, Currency = usd, Family = familyFormContext, PersonId = null }); db.Purses.Add(new Purse { Name = "Гаманець з євро", Size = 0, Currency = eur, Family = familyFormContext, PersonId = null }); db.Purses.Add(new Purse { Name = "Гаманець з злотими", Size = 0, Currency = plz, Family = familyFormContext, PersonId = null }); db.Categories.Add(new Category { Name = "Розваги", Family = familyFormContext }); db.Categories.Add(new Category { Name = "Житло", Family = familyFormContext }); db.Categories.Add(new Category { Name = "Комунальні послуги", Family = familyFormContext }); db.Categories.Add(new Category { Name = "Навчання", Family = familyFormContext }); db.Categories.Add(new Category { Name = "Їжа", Family = familyFormContext }); db.Categories.Add(new Category { Name = "Транспорт", Family = familyFormContext }); db.Categories.Add(new Category { Name = "Робота", Family = familyFormContext }); db.Categories.Add(new Category { Name = "Інше", Family = familyFormContext }); var person = new Person { Name = request.PersonName, Role = "H", Family = familyFormContext, Login = request.Login, Password = request.Password }; db.Persons.Add(person); db.SaveChanges(); } } } catch { response.BaseIsSuccess = false; response.BaseMessage = Constants.BAD_REQUEST; } return response; })); }
public BaseResponse AddIncomeOrExpense(ChangeMoneyRequest request) { return(GetResponse(() => { var response = new BaseResponse(); try { using (FamilyFinanceContext db = new FamilyFinanceContext()) { if (request.FamilyId == null && request.PersonId == null) { response.BaseIsSuccess = false; response.BaseMessage = Shared.Constants.NEED_AUTHORIZE; } else { var category = db.Categories.Where(x => x.Name == request.Category.Name && x.FamilyId == request.FamilyId).FirstOrDefault(); var currency = db.Currencies.Where(x => x.Name == request.Currency.Name).FirstOrDefault(); var purse = db.Purses.Where(x => x.Name == request.Purse.Name && x.FamilyId == request.FamilyId).FirstOrDefault(); if (request.Type == "I") { purse.Size += request.Size; } else { if (request.Size <= purse.Size) { purse.Size -= request.Size; } else { response.BaseIsSuccess = false; response.BaseMessage = "Недостатньо коштів для операції"; } } db.Purses.Update(purse); var model = new ChangeMoney { Name = request.Name, Size = request.Size, Date = request.Date, Type = request.Type, Category = category, Currency = currency, FamilyId = request.FamilyId, PersonId = request.PersonId }; db.ChangeMoneys.Add(model); db.SaveChanges(); } } } catch (Exception ex) { response.BaseIsSuccess = false; response.BaseMessage = ex.Message + "; Inner: " + ex.InnerException.Message; } return response; })); }