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); } }
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); } }
public bool Put(string id, [FromBody] ExpenseBinding binding) { binding.Id = id; return(_expenseHandler.Update(binding)); }
public string Post([FromBody] ExpenseBinding binding) => _expenseHandler.Create(binding);