Exemplo n.º 1
0
        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;
            }));
        }
Exemplo n.º 2
0
        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;
            }));
        }
Exemplo n.º 3
0
        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;
            }));
        }
Exemplo n.º 4
0
        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;
            }));
        }
Exemplo n.º 5
0
        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;
            }));
        }
Exemplo n.º 6
0
        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;
            }));
        }
Exemplo n.º 7
0
        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;
            }));
        }
Exemplo n.º 8
0
        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;
            }));
        }
Exemplo n.º 9
0
        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;
            }));
        }
Exemplo n.º 10
0
        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;
            }));
        }
Exemplo n.º 11
0
        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;
            }));
        }
Exemplo n.º 12
0
        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;
            }));
        }
Exemplo n.º 13
0
        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;
            }));
        }
Exemplo n.º 14
0
        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;
            }));
        }
Exemplo n.º 15
0
        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;
            }));
        }
Exemplo n.º 16
0
        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;
            }));
        }
Exemplo n.º 17
0
        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;
            }));
        }
Exemplo n.º 18
0
        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;
            }));
        }
Exemplo n.º 19
0
        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;
            }));
        }
Exemplo n.º 20
0
        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;
            }));
        }
Exemplo n.º 21
0
        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;
            }));
        }
Exemplo n.º 22
0
        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;
            }));
        }