public static Expense ToEntity(this ExpenseBinding binding, MainContext context, Expense entity = null)
        {
            if (entity == null)
            {
                entity = new Expense();
            }

            entity.Amount        = binding.Amount;
            entity.CardId        = context.Cards.GetId(binding.CardId);
            entity.Comment       = binding.Comment;
            entity.CurrencyId    = context.Currencies.SingleOrDefault(x => x.Code == binding.CurrencyId).Id;
            entity.Date          = binding.Date;
            entity.ExpenseTypeId = context.ExpenseTypes.GetId(binding.ExpenseTypeId).Value;
            entity.Modified      = DateTime.Now;
            entity.NeedsReview   = binding.NeedsReview;
            entity.ParentAmount  = binding.ParentAmount;
            entity.ParentCurrencyExchangeRate = binding.ParentAmount.HasValue ? binding.ParentAmount.Value / binding.Amount : null;
            entity.ParentCurrencyId           = string.IsNullOrEmpty(binding.ParentCurrencyId) ? null : context.Currencies.SingleOrDefault(x => x.Code == binding.ParentCurrencyId)?.Id;
            entity.PaymentTypeId  = context.PaymentTypes.GetId(binding.PaymentTypeId);
            entity.PoiId          = context.Pois.GetId(binding.PoiId);
            entity.ValueId        = binding.Id;
            entity.VendorId       = context.Vendors.GetId(binding.VendorId);
            entity.InstallmentRef = binding.InstallmentRef;

            return(entity);
        }
        public string Create(ExpenseBinding binding)
        {
            if (!string.IsNullOrWhiteSpace(binding.VendorName))
            {
                binding.VendorId = CreateVendor(binding.VendorName);
            }

            using (var db = GetMainContext())
            {
                var entity = binding.ToEntity(db);
                entity.UserId  = UserId;
                entity.ValueId = db.Expenses.NextValueId(UserId).ToString();

                db.Expenses.Add(entity);
                ResolveTransaction(db, entity);

                db.SaveChanges();

                return(entity.ValueId);
            }
        }
Пример #3
0
        public async Task <GoogleCloudDialogflowV2WebhookResponse> CreateExpense(GoogleCloudDialogflowV2WebhookRequest request)
        {
            var    unitCurrency = (JObject)request.QueryResult.Parameters["unit-currency"];
            string currencyId   = (string)unitCurrency["currency"];

            var user = _userHandler.Get(UserId);

            var binding = new ExpenseBinding()
            {
                Amount        = Convert.ToDecimal(unitCurrency["amount"]),
                CurrencyId    = string.IsNullOrEmpty(currencyId) ? user.DefaultCurrency.Code : currencyId,
                Comment       = (string)request.QueryResult.Parameters["description"],
                Date          = (DateTime)request.QueryResult.Parameters["date"],
                ExpenseTypeId = ((string)request.QueryResult.Parameters["expense-type"]).Replace(" ", "-"),
                NeedsReview   = true,
                PaymentTypeId = (string)request.QueryResult.Parameters["payment-type"]
            };

            _expenseHandler.Create(binding);

            return(new GoogleCloudDialogflowV2WebhookResponse());
        }
        public bool Update(ExpenseBinding binding)
        {
            if (!string.IsNullOrWhiteSpace(binding.VendorName))
            {
                binding.VendorId = CreateVendor(binding.VendorName);
            }

            using (var context = GetMainContext())
            {
                var entity = context.Expenses.WhereUser(UserId)
                             .Include(x => x.Transaction)
                             .SingleOrDefault(x => x.ValueId == binding.Id);

                entity = binding.ToEntity(context, entity);

                context.Expenses.Update(entity);
                ResolveTransaction(context, entity);

                context.SaveChanges();

                return(true);
            }
        }
Пример #5
0
 public bool Put(string id, [FromBody] ExpenseBinding binding)
 {
     binding.Id = id;
     return(_expenseHandler.Update(binding));
 }
Пример #6
0
 public string Post([FromBody] ExpenseBinding binding) => _expenseHandler.Create(binding);