-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathExpenses.cs
82 lines (71 loc) · 3.74 KB
/
Expenses.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using Birko.SuperFaktura.Request.Expense;
using Birko.SuperFaktura.Response;
using Birko.SuperFaktura.Response.Expense;
using System.Collections.Generic;
using System.Dynamic;
using System.Threading.Tasks;
namespace Birko.SuperFaktura
{
public class Expenses
{
private readonly AbstractSuperFaktura superFaktura;
public Expenses(AbstractSuperFaktura superFaktura)
{
this.superFaktura = superFaktura;
}
public async Task<PagedResponse<Detail>> List(Filter filter, bool listInfo = true)
{
var result = await superFaktura.Get(string.Format("expenses/index.json{0}", filter.ToParameters(listInfo))).ConfigureAwait(false);
if (listInfo)
{
return superFaktura.DeserializeResult<PagedResponse<Detail>>(result);
}
else
{
return new PagedResponse<Detail> { Items = superFaktura.DeserializeResult<IEnumerable<Detail>>(result) };
}
}
public async Task<ErrorMessageResponse> Delete(int ID)
{
var result = await superFaktura.Get($"expenses/delete/{ID}").ConfigureAwait(false);
return superFaktura.DeserializeResult<ErrorMessageResponse>(result);
}
public async Task<Detail> Add(Request.Expense.Expense expense, IEnumerable<Request.Expense.ExpenseItem> items = null, Request.Client.Client client= null, Request.Expense.Extra extra = null, IEnumerable<int> tags = null)
{
var result = await superFaktura.Post("expenses/add", new ExpenseData { Expense = expense, ExpenseExtra = extra, Tag = tags, Client = client }).ConfigureAwait(false);
var data = superFaktura.DeserializeResult<Response<Detail>>(result);
return data.Data;
}
public async Task<Response<Detail>> Edit(Request.Expense.Expense expense, Request.Client.Client client = null, Request.Expense.Extra extra = null, IEnumerable<int> tags = null)
{
var result = await superFaktura.Post("expenses/edit", new ExpenseData { Expense = expense, ExpenseExtra = extra, Tag = tags, Client = client }).ConfigureAwait(false);
return superFaktura.DeserializeResult<Response<Detail>>(result);
}
public async Task<Detail> View(int id)
{
var result = await superFaktura.Get($"expenses/view/{id}.json").ConfigureAwait(false);
return superFaktura.DeserializeResult<Detail>(result);
}
public async Task<PaymentResponse> AddPayment(Request.Expense.Payment payment)
{
var result = await superFaktura.Post("expense_payments/add", new Request.Expense.ExpensePaymentData { ExpensePayment = payment }).ConfigureAwait(false);
return superFaktura.DeserializeResult<PaymentResponse>(result);
}
public async Task<ErrorMessageResponse> DeletePayment(int expensePaymentID)
{
var result = await superFaktura.Get($"expense_payments/delete/{expensePaymentID}").ConfigureAwait(false);
return superFaktura.DeserializeResult<ErrorMessageResponse>(result);
}
public async Task<RelatedItemResponse> AddRelatedItem(Request.RelatedItem relatedItem)
{
var result = await superFaktura.Post("expenses/addRelatedItem", relatedItem).ConfigureAwait(false);
var data = superFaktura.DeserializeResult<Response<RelatedItemResponse>>(result);
return data.Data;
}
public async Task<ErrorMessageResponse> DeleteRelatedItem(int relationID)
{
var result = await superFaktura.Get($"expenses/deleteRelatedItem/{relationID}").ConfigureAwait(false);
return superFaktura.DeserializeResult<ErrorMessageResponse>(result);
}
}
}