aboutsummaryrefslogtreecommitdiffstats
path: root/code/app/src
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-10-09 18:33:20 +0200
committerivarlovlie <git@ivarlovlie.no>2022-10-09 18:33:20 +0200
commita57845f08a6eb9bc32c2173f15472e0c29722cf6 (patch)
tree68724e66a4caadf78c464a9cd93f62c8aaed7401 /code/app/src
parentb7e39b59fd0fc7b5610ebff29035bf622079e0d8 (diff)
downloadgreatoffice-a57845f08a6eb9bc32c2173f15472e0c29722cf6.tar.xz
greatoffice-a57845f08a6eb9bc32c2173f15472e0c29722cf6.zip
refactor: Restructure and create new models
Diffstat (limited to 'code/app/src')
-rw-r--r--code/app/src/lib/models/TimeCategoryDto.ts9
-rw-r--r--code/app/src/lib/models/TimeEntryDto.ts13
-rw-r--r--code/app/src/lib/models/TimeEntryQuery.ts27
-rw-r--r--code/app/src/lib/models/TimeLabelDto.ts8
-rw-r--r--code/app/src/lib/models/base/Customer.ts21
-rw-r--r--code/app/src/lib/models/base/CustomerContact.ts8
-rw-r--r--code/app/src/lib/models/base/CustomerEvent.ts6
-rw-r--r--code/app/src/lib/models/base/Tenant.ts8
-rw-r--r--code/app/src/lib/models/base/User.ts13
-rw-r--r--code/app/src/lib/models/base/UserRole.ts5
-rw-r--r--code/app/src/lib/models/internal/CreateAccountPayload.ts (renamed from code/app/src/lib/models/CreateAccountPayload.ts)0
-rw-r--r--code/app/src/lib/models/internal/ErrorResult.ts (renamed from code/app/src/lib/models/ErrorResult.ts)0
-rw-r--r--code/app/src/lib/models/internal/IInternalFetchRequest.ts (renamed from code/app/src/lib/models/IInternalFetchRequest.ts)0
-rw-r--r--code/app/src/lib/models/internal/IInternalFetchResponse.ts (renamed from code/app/src/lib/models/IInternalFetchResponse.ts)0
-rw-r--r--code/app/src/lib/models/internal/ISession.ts (renamed from code/app/src/lib/models/ISession.ts)0
-rw-r--r--code/app/src/lib/models/internal/IValidationResult.ts (renamed from code/app/src/lib/models/IValidationResult.ts)0
-rw-r--r--code/app/src/lib/models/internal/LoginPayload.ts (renamed from code/app/src/lib/models/LoginPayload.ts)0
-rw-r--r--code/app/src/lib/models/internal/UnwrappedEntryDateTime.ts (renamed from code/app/src/lib/models/UnwrappedEntryDateTime.ts)2
-rw-r--r--code/app/src/lib/models/internal/UpdateProfilePayload.ts (renamed from code/app/src/lib/models/UpdateProfilePayload.ts)0
-rw-r--r--code/app/src/lib/models/projects/Project.ts13
-rw-r--r--code/app/src/lib/models/projects/ProjectLabel.ts5
-rw-r--r--code/app/src/lib/models/projects/ProjectMember.ts10
-rw-r--r--code/app/src/lib/models/projects/ProjectMeta.ts7
-rw-r--r--code/app/src/lib/models/projects/ProjectRole.ts7
-rw-r--r--code/app/src/lib/models/projects/ProjectStatus.ts5
-rw-r--r--code/app/src/lib/models/work/WorkCategory.ts5
-rw-r--r--code/app/src/lib/models/work/WorkEntry.ts13
-rw-r--r--code/app/src/lib/models/work/WorkEntryQueryResponse.ts27
-rw-r--r--code/app/src/lib/models/work/WorkLabel.ts5
-rw-r--r--code/app/src/lib/models/work/WorkQuery.ts (renamed from code/app/src/lib/models/TimeQueryDto.ts)13
30 files changed, 166 insertions, 64 deletions
diff --git a/code/app/src/lib/models/TimeCategoryDto.ts b/code/app/src/lib/models/TimeCategoryDto.ts
deleted file mode 100644
index fcdb7ea..0000000
--- a/code/app/src/lib/models/TimeCategoryDto.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Temporal } from "temporal-polyfill";
-
-export interface TimeCategoryDto {
- selected?: boolean;
- id?: string,
- modified_at?: Temporal.PlainDate,
- name?: string,
- color?: string
-}
diff --git a/code/app/src/lib/models/TimeEntryDto.ts b/code/app/src/lib/models/TimeEntryDto.ts
deleted file mode 100644
index 571c52e..0000000
--- a/code/app/src/lib/models/TimeEntryDto.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import type { TimeLabelDto } from "./TimeLabelDto";
-import type { TimeCategoryDto } from "./TimeCategoryDto";
-import { Temporal } from "temporal-polyfill";
-
-export interface TimeEntryDto {
- id: string,
- modified_at?: Temporal.PlainDate,
- start: string,
- stop: string,
- description: string,
- labels?: Array<TimeLabelDto>,
- category: TimeCategoryDto,
-}
diff --git a/code/app/src/lib/models/TimeEntryQuery.ts b/code/app/src/lib/models/TimeEntryQuery.ts
deleted file mode 100644
index d983d1a..0000000
--- a/code/app/src/lib/models/TimeEntryQuery.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import type { TimeCategoryDto } from "./TimeCategoryDto";
-import type { TimeLabelDto } from "./TimeLabelDto";
-import type { Temporal } from "temporal-polyfill";
-
-export interface TimeEntryQuery {
- duration: TimeEntryQueryDuration,
- categories?: Array<TimeCategoryDto>,
- labels?: Array<TimeLabelDto>,
- dateRange?: TimeEntryQueryDateRange,
- specificDate?: Temporal.PlainDateTime
- page: number,
- pageSize: number
-}
-
-export interface TimeEntryQueryDateRange {
- from: Temporal.PlainDateTime,
- to: Temporal.PlainDateTime
-}
-
-export enum TimeEntryQueryDuration {
- TODAY = 0,
- THIS_WEEK = 1,
- THIS_MONTH = 2,
- THIS_YEAR = 3,
- SPECIFIC_DATE = 4,
- DATE_RANGE = 5,
-}
diff --git a/code/app/src/lib/models/TimeLabelDto.ts b/code/app/src/lib/models/TimeLabelDto.ts
deleted file mode 100644
index 7183bcf..0000000
--- a/code/app/src/lib/models/TimeLabelDto.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { Temporal } from "temporal-polyfill";
-
-export interface TimeLabelDto {
- id?: string,
- modified_at?: Temporal.PlainDate,
- name?: string,
- color?: string
-}
diff --git a/code/app/src/lib/models/base/Customer.ts b/code/app/src/lib/models/base/Customer.ts
new file mode 100644
index 0000000..e44ebb6
--- /dev/null
+++ b/code/app/src/lib/models/base/Customer.ts
@@ -0,0 +1,21 @@
+import type { CustomerContact } from "./CustomerContact"
+import type { User } from "./User"
+
+export type Customer = {
+ /**
+ * Guid id for customer
+ */
+ id: string,
+ /**
+ * The name of the company
+ */
+ name: string,
+ /**
+ * Responsible contact in the current tenant
+ */
+ tenantContact: User,
+ /**
+ * The customers main contact
+ */
+ mainContact: CustomerContact,
+} \ No newline at end of file
diff --git a/code/app/src/lib/models/base/CustomerContact.ts b/code/app/src/lib/models/base/CustomerContact.ts
new file mode 100644
index 0000000..e8abea5
--- /dev/null
+++ b/code/app/src/lib/models/base/CustomerContact.ts
@@ -0,0 +1,8 @@
+export type CustomerContact = {
+ firstName: string,
+ lastname: string,
+ email: string,
+ phone: string,
+ workTitle: string,
+ note: string
+} \ No newline at end of file
diff --git a/code/app/src/lib/models/base/CustomerEvent.ts b/code/app/src/lib/models/base/CustomerEvent.ts
new file mode 100644
index 0000000..af86511
--- /dev/null
+++ b/code/app/src/lib/models/base/CustomerEvent.ts
@@ -0,0 +1,6 @@
+export type CustomerEvent = {
+ /**
+ * A descriptive name for the occured event
+ */
+ name: string,
+} \ No newline at end of file
diff --git a/code/app/src/lib/models/base/Tenant.ts b/code/app/src/lib/models/base/Tenant.ts
new file mode 100644
index 0000000..983122b
--- /dev/null
+++ b/code/app/src/lib/models/base/Tenant.ts
@@ -0,0 +1,8 @@
+import type { User } from "./User"
+
+export type Tenant = {
+ id: string,
+ name: string,
+ description: string,
+ masterUser: User,
+} \ No newline at end of file
diff --git a/code/app/src/lib/models/base/User.ts b/code/app/src/lib/models/base/User.ts
new file mode 100644
index 0000000..371c38e
--- /dev/null
+++ b/code/app/src/lib/models/base/User.ts
@@ -0,0 +1,13 @@
+import type { UserRole } from "./UserRole"
+
+export type User = {
+ /**
+ * Guid id for user
+ */
+ id: string,
+ firstName: string,
+ lastName: string,
+ role: UserRole,
+ username: string,
+ email: string
+} \ No newline at end of file
diff --git a/code/app/src/lib/models/base/UserRole.ts b/code/app/src/lib/models/base/UserRole.ts
new file mode 100644
index 0000000..ec32852
--- /dev/null
+++ b/code/app/src/lib/models/base/UserRole.ts
@@ -0,0 +1,5 @@
+export enum UserRole {
+ REGULAR = "reg",
+ ADMINISTRATOR = "adm",
+ OWNER = "own"
+} \ No newline at end of file
diff --git a/code/app/src/lib/models/CreateAccountPayload.ts b/code/app/src/lib/models/internal/CreateAccountPayload.ts
index d116308..d116308 100644
--- a/code/app/src/lib/models/CreateAccountPayload.ts
+++ b/code/app/src/lib/models/internal/CreateAccountPayload.ts
diff --git a/code/app/src/lib/models/ErrorResult.ts b/code/app/src/lib/models/internal/ErrorResult.ts
index 7c70017..7c70017 100644
--- a/code/app/src/lib/models/ErrorResult.ts
+++ b/code/app/src/lib/models/internal/ErrorResult.ts
diff --git a/code/app/src/lib/models/IInternalFetchRequest.ts b/code/app/src/lib/models/internal/IInternalFetchRequest.ts
index 68505e2..68505e2 100644
--- a/code/app/src/lib/models/IInternalFetchRequest.ts
+++ b/code/app/src/lib/models/internal/IInternalFetchRequest.ts
diff --git a/code/app/src/lib/models/IInternalFetchResponse.ts b/code/app/src/lib/models/internal/IInternalFetchResponse.ts
index 6c91b35..6c91b35 100644
--- a/code/app/src/lib/models/IInternalFetchResponse.ts
+++ b/code/app/src/lib/models/internal/IInternalFetchResponse.ts
diff --git a/code/app/src/lib/models/ISession.ts b/code/app/src/lib/models/internal/ISession.ts
index 7587145..7587145 100644
--- a/code/app/src/lib/models/ISession.ts
+++ b/code/app/src/lib/models/internal/ISession.ts
diff --git a/code/app/src/lib/models/IValidationResult.ts b/code/app/src/lib/models/internal/IValidationResult.ts
index 9a21b13..9a21b13 100644
--- a/code/app/src/lib/models/IValidationResult.ts
+++ b/code/app/src/lib/models/internal/IValidationResult.ts
diff --git a/code/app/src/lib/models/LoginPayload.ts b/code/app/src/lib/models/internal/LoginPayload.ts
index beb96cf..beb96cf 100644
--- a/code/app/src/lib/models/LoginPayload.ts
+++ b/code/app/src/lib/models/internal/LoginPayload.ts
diff --git a/code/app/src/lib/models/UnwrappedEntryDateTime.ts b/code/app/src/lib/models/internal/UnwrappedEntryDateTime.ts
index d614f91..da71bc9 100644
--- a/code/app/src/lib/models/UnwrappedEntryDateTime.ts
+++ b/code/app/src/lib/models/internal/UnwrappedEntryDateTime.ts
@@ -1,4 +1,4 @@
-import { Temporal } from "temporal-polyfill";
+import type { Temporal } from "temporal-polyfill";
export interface UnwrappedEntryDateTime {
start_date: Temporal.PlainDate,
diff --git a/code/app/src/lib/models/UpdateProfilePayload.ts b/code/app/src/lib/models/internal/UpdateProfilePayload.ts
index d2983ff..d2983ff 100644
--- a/code/app/src/lib/models/UpdateProfilePayload.ts
+++ b/code/app/src/lib/models/internal/UpdateProfilePayload.ts
diff --git a/code/app/src/lib/models/projects/Project.ts b/code/app/src/lib/models/projects/Project.ts
new file mode 100644
index 0000000..f265e67
--- /dev/null
+++ b/code/app/src/lib/models/projects/Project.ts
@@ -0,0 +1,13 @@
+import type { Temporal } from "temporal-polyfill"
+import type { ProjectMember } from "./ProjectMember"
+import type { ProjectStatus } from "./ProjectStatus"
+
+export type Project = {
+ id: string,
+ name: string,
+ description?: string,
+ start: Temporal.PlainDate,
+ stop?: Temporal.PlainDate,
+ members: Array<ProjectMember>,
+ status: ProjectStatus
+} \ No newline at end of file
diff --git a/code/app/src/lib/models/projects/ProjectLabel.ts b/code/app/src/lib/models/projects/ProjectLabel.ts
new file mode 100644
index 0000000..59aa9d5
--- /dev/null
+++ b/code/app/src/lib/models/projects/ProjectLabel.ts
@@ -0,0 +1,5 @@
+export type ProjectLabel = {
+ id: string,
+ name: string,
+ color: string
+} \ No newline at end of file
diff --git a/code/app/src/lib/models/projects/ProjectMember.ts b/code/app/src/lib/models/projects/ProjectMember.ts
new file mode 100644
index 0000000..de348ef
--- /dev/null
+++ b/code/app/src/lib/models/projects/ProjectMember.ts
@@ -0,0 +1,10 @@
+import type { ProjectRole } from "./ProjectRole"
+
+export type ProjectMember = {
+ id: string,
+ name: string,
+ role: ProjectRole,
+ email: string,
+ userId?: string,
+ customerId?: string
+} \ No newline at end of file
diff --git a/code/app/src/lib/models/projects/ProjectMeta.ts b/code/app/src/lib/models/projects/ProjectMeta.ts
new file mode 100644
index 0000000..c583b47
--- /dev/null
+++ b/code/app/src/lib/models/projects/ProjectMeta.ts
@@ -0,0 +1,7 @@
+import type { Temporal } from "temporal-polyfill"
+import type { User } from "../base/User"
+
+export type ProjectMeta = {
+ created: Temporal.PlainDateTime,
+ createdBy: User,
+} \ No newline at end of file
diff --git a/code/app/src/lib/models/projects/ProjectRole.ts b/code/app/src/lib/models/projects/ProjectRole.ts
new file mode 100644
index 0000000..0fa2347
--- /dev/null
+++ b/code/app/src/lib/models/projects/ProjectRole.ts
@@ -0,0 +1,7 @@
+export enum ProjectRole {
+ EXTERNAL = "ext",
+ INTERNAL = "int",
+ RESOURCE = "res",
+ MANAGER = "man",
+ OWNER = "own"
+} \ No newline at end of file
diff --git a/code/app/src/lib/models/projects/ProjectStatus.ts b/code/app/src/lib/models/projects/ProjectStatus.ts
new file mode 100644
index 0000000..2df4b88
--- /dev/null
+++ b/code/app/src/lib/models/projects/ProjectStatus.ts
@@ -0,0 +1,5 @@
+export enum ProjectStatus {
+ ACTIVE = "act",
+ EXPIRED = "exp",
+ IDLE = "idl"
+} \ No newline at end of file
diff --git a/code/app/src/lib/models/work/WorkCategory.ts b/code/app/src/lib/models/work/WorkCategory.ts
new file mode 100644
index 0000000..7dd85d5
--- /dev/null
+++ b/code/app/src/lib/models/work/WorkCategory.ts
@@ -0,0 +1,5 @@
+export type WorkCategory = {
+ id: string,
+ name: string,
+ color: string
+}
diff --git a/code/app/src/lib/models/work/WorkEntry.ts b/code/app/src/lib/models/work/WorkEntry.ts
new file mode 100644
index 0000000..2108b88
--- /dev/null
+++ b/code/app/src/lib/models/work/WorkEntry.ts
@@ -0,0 +1,13 @@
+import type { WorkLabel } from "./WorkLabel";
+import type { WorkCategory } from "./WorkCategory";
+import type { Project } from "../projects/Project";
+
+export type WorkEntry = {
+ id: string,
+ start: string,
+ stop: string,
+ description: string,
+ labels?: Array<WorkLabel>,
+ category?: WorkCategory,
+ project?: Project
+}
diff --git a/code/app/src/lib/models/work/WorkEntryQueryResponse.ts b/code/app/src/lib/models/work/WorkEntryQueryResponse.ts
new file mode 100644
index 0000000..a6974f1
--- /dev/null
+++ b/code/app/src/lib/models/work/WorkEntryQueryResponse.ts
@@ -0,0 +1,27 @@
+import type { WorkCategory } from "./WorkCategory";
+import type { WorkLabel } from "./WorkLabel";
+import type { Temporal } from "temporal-polyfill";
+
+export interface WorkEntryQueryResponse {
+ duration: WorkEntryQueryDuration,
+ categories?: Array<WorkCategory>,
+ labels?: Array<WorkLabel>,
+ dateRange?: WorkEntryQueryDateRange,
+ specificDate?: Temporal.PlainDateTime
+ page: number,
+ pageSize: number
+}
+
+export interface WorkEntryQueryDateRange {
+ from: Temporal.PlainDateTime,
+ to: Temporal.PlainDateTime
+}
+
+export enum WorkEntryQueryDuration {
+ TODAY = 0,
+ THIS_WEEK = 1,
+ THIS_MONTH = 2,
+ THIS_YEAR = 3,
+ SPECIFIC_DATE = 4,
+ DATE_RANGE = 5,
+}
diff --git a/code/app/src/lib/models/work/WorkLabel.ts b/code/app/src/lib/models/work/WorkLabel.ts
new file mode 100644
index 0000000..f7e2795
--- /dev/null
+++ b/code/app/src/lib/models/work/WorkLabel.ts
@@ -0,0 +1,5 @@
+export interface WorkLabel {
+ id?: string,
+ name?: string,
+ color?: string
+}
diff --git a/code/app/src/lib/models/TimeQueryDto.ts b/code/app/src/lib/models/work/WorkQuery.ts
index 607c51e..bccc589 100644
--- a/code/app/src/lib/models/TimeQueryDto.ts
+++ b/code/app/src/lib/models/work/WorkQuery.ts
@@ -1,8 +1,9 @@
-import type { TimeEntryDto } from "./TimeEntryDto";
-import ValidationResult, { IValidationResult } from "./IValidationResult";
+import type { HourEntry } from "./WorkEntry";
+import type { IValidationResult } from "../internal/IValidationResult";
+import ValidationResult from "../internal/IValidationResult";
-export interface ITimeQueryDto {
- results: Array<TimeEntryDto>,
+export interface IWorkQuery {
+ results: Array<HourEntry>,
page: number,
pageSize: number,
totalRecords: number,
@@ -10,8 +11,8 @@ export interface ITimeQueryDto {
is_valid: Function
}
-export class TimeQueryDto implements ITimeQueryDto {
- results: TimeEntryDto[];
+export class WorkQuery implements IWorkQuery {
+ results: HourEntry[];
page: number;
pageSize: number;
totalRecords: number;