Exemplo n.º 1
0
 public async Task <BaseResponse> AddIncomeOrExpenseAsync([FromBody] ChangeMoneyRequest request) =>
 await Task.Run(() => _changeMoneyService.AddIncomeOrExpense(request));
Exemplo n.º 2
0
 public async Task <BaseResponse> AddIncomeOrExpenseAsync(ChangeMoneyRequest request) =>
 await TryCallApiAsync <BaseResponse>("changemoneys/add", request);
Exemplo n.º 3
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;
            }));
        }