Browse Source

Refactoring

pull/2362/head
Thomas 2 years ago
parent
commit
98b241b87a
  1. 8
      apps/client/src/app/services/import-activities.service.ts
  2. 42
      libs/common/src/lib/helper.ts
  3. 13
      test/import/ok.csv

8
apps/client/src/app/services/import-activities.service.ts

@ -219,12 +219,12 @@ export class ImportActivitiesService {
item: any;
}) {
item = this.lowercaseKeys(item);
for (const key of ImportActivitiesService.DATE_KEYS) {
if (item[key]) {
const parsedDate = parseDateHelper(item[key]);
if (parsedDate !== null) {
return parsedDate.toISOString();
}
try {
return parseDateHelper(item[key].toString()).toISOString();
} catch {}
}
}

42
libs/common/src/lib/helper.ts

@ -292,44 +292,34 @@ export const DATE_FORMAT = 'yyyy-MM-dd';
export const DATE_FORMAT_MONTHLY = 'MMMM yyyy';
export const DATE_FORMAT_YEARLY = 'yyyy';
// Define the supported date format patterns
const DATE_FORMATS = [
'dd-MM-yyyy',
'dd/MM/yyyy',
'dd.MM.yyyy',
'yyyy-MM-dd',
'yyyy.MM.dd',
'yyyy/MM/dd',
'yyyyMMdd'
];
// Helper function to parse a date string
export function parseDate(date: string): Date | null {
// Transform 'yyyyMMdd' format to supported format by parse function
if (`${date}`.length === 8) {
date = date.toString();
if (date.length === 8) {
const match = date.match(/^(\d{4})(\d{2})(\d{2})$/);
if (match) {
const [, year, month, day] = match;
date = `${year}-${month}-${day}`;
}
}
const matchingFormat = DATE_FORMATS.find(
(format) => isMatch(date, format) && date.length === format.length
);
const dateFormat = [
'dd-MM-yyyy',
'dd/MM/yyyy',
'dd.MM.yyyy',
'yyyy-MM-dd',
'yyyy/MM/dd',
'yyyy.MM.dd',
'yyyyMMdd'
].find((format) => {
return isMatch(date, format) && format.length === date.length;
});
if (matchingFormat) {
return parse(date, matchingFormat, new Date());
if (dateFormat) {
return parse(date, dateFormat, new Date());
}
try {
return parseISO(date);
} catch (error) {
console.error(`Error parsing date: ${error}`);
// Return null to indicate parsing failure
return null;
}
return parseISO(date);
}
export function prettifySymbol(aSymbol: string): string {

13
test/import/ok.csv

@ -1,12 +1,5 @@
Date,Code,Currency,Price,Quantity,Action,Fee
16-09-2021,MSFT,USD,298.580,5,buy,19.00
17/11/2021,MSFT,USD,0.62,5,dividend,0.00
16/09/2021,MSFT,USD,298.580,5,buy,19.00
01/01/2022,Penthouse Apartment,USD,500000.0,1,item,0.00
06/06/2050,MSFT,USD,0.00,0,buy,0.00
01-02-2021,MSFT,USD,3.15,5,dividend,0.00
02/03/2021,AAPL,USD,210.581,5,buy,30.00
03.04.2022,Small Apartment,USD,205000.0,1,item,0.00
2040-02-01,MSFT,USD,0.00,0,buy,0.00
2040/03/02,AAPL,USD,100.00,0,buy,2.00
2040.04.03,MSFT,USD,62.00,0,buy,3.00
11110202,AAPL,USD,5.20,0,buy,20.00
01.01.2022,Penthouse Apartment,USD,500000.0,1,item,0.00
20500606,MSFT,USD,0.00,0,buy,0.00

1 Date Code Currency Price Quantity Action Fee
2 16-09-2021 MSFT USD 298.580 5 buy 19.00
3 17/11/2021 MSFT USD 0.62 5 dividend 0.00
4 16/09/2021 01.01.2022 MSFT Penthouse Apartment USD 298.580 500000.0 5 1 buy item 19.00 0.00
5 01/01/2022 20500606 Penthouse Apartment MSFT USD 500000.0 0.00 1 0 item buy 0.00
06/06/2050 MSFT USD 0.00 0 buy 0.00
01-02-2021 MSFT USD 3.15 5 dividend 0.00
02/03/2021 AAPL USD 210.581 5 buy 30.00
03.04.2022 Small Apartment USD 205000.0 1 item 0.00
2040-02-01 MSFT USD 0.00 0 buy 0.00
2040/03/02 AAPL USD 100.00 0 buy 2.00
2040.04.03 MSFT USD 62.00 0 buy 3.00
11110202 AAPL USD 5.20 0 buy 20.00
Loading…
Cancel
Save