diff --git a/server/src/database/migrations/20200105014405_create_expenses_table.js b/server/src/database/migrations/20200105014405_create_expenses_table.js index 4052323a6..40030dce3 100644 --- a/server/src/database/migrations/20200105014405_create_expenses_table.js +++ b/server/src/database/migrations/20200105014405_create_expenses_table.js @@ -8,7 +8,7 @@ exports.up = function(knex) { table.integer('payment_account_id').unsigned(); table.integer('payee_id').unsigned(); table.string('reference_no'); - table.boolean('published').defaultTo(false); + table.date('published_at'); table.integer('user_id').unsigned(); table.date('payment_date'); table.timestamps(); diff --git a/server/src/interfaces/Expenses.ts b/server/src/interfaces/Expenses.ts index ee944d837..8ed67b362 100644 --- a/server/src/interfaces/Expenses.ts +++ b/server/src/interfaces/Expenses.ts @@ -8,7 +8,7 @@ export interface IExpense { paymentAccountId: number, peyeeId?: number, referenceNo?: string, - published: boolean, + publishedAt: Date|null, userId: number, paymentDate: Date, @@ -29,7 +29,7 @@ export interface IExpenseDTO { paymentAccountId: number, peyeeId?: number, referenceNo?: string, - published: boolean, + publish: boolean, userId: number, paymentDate: Date, diff --git a/server/src/repositories/ExpenseRepository.ts b/server/src/repositories/ExpenseRepository.ts index 861097814..e83836ee0 100644 --- a/server/src/repositories/ExpenseRepository.ts +++ b/server/src/repositories/ExpenseRepository.ts @@ -1,5 +1,6 @@ import TenantRepository from "./TenantRepository"; import { IExpense } from 'interfaces'; +import moment from "moment"; export default class ExpenseRepository extends TenantRepository { models: any; @@ -31,7 +32,11 @@ export default class ExpenseRepository extends TenantRepository { } publish(expenseId: number) { + const { Expense } = this.models; + return Expense.query().findById(expenseId).patch({ + publishedAt: moment().toMySqlDateTime(), + }); } delete(expenseId: number) { diff --git a/server/src/services/Expenses/ExpensesService.ts b/server/src/services/Expenses/ExpensesService.ts index 8c9de055b..617e88d48 100644 --- a/server/src/services/Expenses/ExpensesService.ts +++ b/server/src/services/Expenses/ExpensesService.ts @@ -1,5 +1,5 @@ import { Service, Inject } from "typedi"; -import { difference, sumBy } from 'lodash'; +import { difference, sumBy, omit } from 'lodash'; import moment from "moment"; import { ServiceError } from "exceptions"; import TenancyService from 'services/Tenancy/TenancyService'; @@ -244,14 +244,16 @@ export default class ExpensesService implements IExpensesService { const totalAmount = sumBy(expenseDTO.categories, 'amount'); return { - published: false, categories: [], - ...expenseDTO, + ...omit(expenseDTO, ['publish']), totalAmount, paymentDate: moment(expenseDTO.paymentDate).toMySqlDateTime(), ...(user) ? { userId: user.id, } : {}, + ...(expenseDTO.publish) ? { + publishedAt: moment().toMySqlDateTime(), + } : {}, } }