diff --git a/src/enum/userEcogesture.enum.ts b/src/enum/userAction.enum.ts similarity index 57% rename from src/enum/userEcogesture.enum.ts rename to src/enum/userAction.enum.ts index 22ce304965f43a7d73db2a431d689956e62e280f..d50f45013131651ba136c61881159752720524c2 100644 --- a/src/enum/userEcogesture.enum.ts +++ b/src/enum/userAction.enum.ts @@ -1,4 +1,4 @@ -export enum UserEcogestureState { +export enum UserActionState { UNSTARTED = 0, ONGOING = 1, DONE = 2, diff --git a/src/models/action.model.ts b/src/models/action.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..c483f1ab985dfb4afb01ad17608080461bece091 --- /dev/null +++ b/src/models/action.model.ts @@ -0,0 +1,8 @@ +import { UserActionState } from 'enum/userAction.enum' +import { DateTime } from 'luxon' +import { Ecogesture } from './index' + +export interface UserAction extends Ecogesture { + state: UserActionState + startDate: DateTime +} diff --git a/src/models/challenge.model.ts b/src/models/challenge.model.ts index 199770da0ee30e90c0f2ba7b246e0c12e2340dc4..b61db6e2c599346e5795d238c47844308e16bea5 100644 --- a/src/models/challenge.model.ts +++ b/src/models/challenge.model.ts @@ -11,7 +11,7 @@ import { UserExploration, Relation, } from 'models' -import { UserEcogesture } from './ecogesture.model' +import { UserAction } from './ecogesture.model' export interface ChallengeState { userChallengeList: UserChallenge[] @@ -53,7 +53,7 @@ export interface UserChallengeEntity { endingDate: string | null quiz: UserQuiz exploration: UserExploration - action: UserEcogesture | null + action: UserAction | null } export interface UserChallenge diff --git a/src/models/ecogesture.model.ts b/src/models/ecogesture.model.ts index 83230ff157590105ef5e302d28f9b65b3097777c..632e31b7888b7523409b397ecd59e0aeb07b2e87 100644 --- a/src/models/ecogesture.model.ts +++ b/src/models/ecogesture.model.ts @@ -1,7 +1,5 @@ import { EquipmentType, Room, Season, Usage } from 'enum/ecogesture.enum' import { FluidType } from 'enum/fluid.enum' -import { UserEcogestureState } from 'enum/userEcogesture.enum' -import { DateTime } from 'luxon' export interface Ecogesture { id: string @@ -27,8 +25,3 @@ export interface Ecogesture { _rev?: string _type?: string } - -export interface UserEcogesture extends Ecogesture { - state: UserEcogestureState - startDate: DateTime -} diff --git a/src/models/index.ts b/src/models/index.ts index 7e469cb71670b8db25404f70116188a7522c2e3d..43dc8c9f7d248908033c7a79006e46668b78cfba 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -1,4 +1,5 @@ export * from './account.model' +export * from './action.model' export * from './challenge.model' export * from './chart.model' export * from './config.model' diff --git a/src/services/action.service.spec.ts b/src/services/action.service.spec.ts index 96c32e2f6293751c3c88038520f0f95ee082adb4..b7c2981db1d2f6290d4173b15e61567586da68df 100644 --- a/src/services/action.service.spec.ts +++ b/src/services/action.service.spec.ts @@ -1,4 +1,4 @@ -import { UserEcogestureState } from 'enum/userEcogesture.enum' +import { UserActionState } from 'enum/UserAction.enum' import { DateTime } from 'luxon' import { AllEcogestureData, @@ -96,14 +96,14 @@ describe('Action Service', () => { DateTime.fromISO('2020-10-01T00:00:00.000Z', { zone: 'utc' }) ) const result = actionService.launchAction(ecogestureDefault) - const UserEcogestureDefault = { + const UserActionDefault = { ...ecogestureDefault, startDate: DateTime.fromISO('2020-10-01T00:00:00.000Z', { zone: 'utc', }), - state: UserEcogestureState.ONGOING, + state: UserActionState.ONGOING, } - expect(result).toEqual(UserEcogestureDefault) + expect(result).toEqual(UserActionDefault) }) it('complete list if < 3', async () => { mockgetEcogesturesByIds.mockResolvedValueOnce([ diff --git a/src/services/action.service.ts b/src/services/action.service.ts index 7e47adeed238d50f5e887f1663cea2605f6087b8..9ad041784fd856eeedae729c1a46fb12a1700423 100644 --- a/src/services/action.service.ts +++ b/src/services/action.service.ts @@ -1,10 +1,10 @@ import { Client } from 'cozy-client' import { Season } from 'enum/ecogesture.enum' import { FluidType } from 'enum/fluid.enum' -import { UserEcogestureState } from 'enum/userEcogesture.enum' +import { UserActionState } from 'enum/UserAction.enum' import { orderBy } from 'lodash' import { DateTime, Interval } from 'luxon' -import { Ecogesture, UserEcogesture } from 'models' +import { Ecogesture, UserAction } from 'models' import ChallengeService from './challenge.service' import EcogestureService from './ecogesture.service' @@ -32,7 +32,7 @@ export default class ActionService { const actionsDone: (string | null)[] = userChallenges .map(challenge => challenge.action) - .filter(action => action && action.state === UserEcogestureState.DONE) + .filter(action => action && action.state === UserActionState.DONE) .map(action => action && action.id) //Remove actions Done from the list if (actionsDone.length > 0) { @@ -162,18 +162,18 @@ export default class ActionService { } /** - *launchAction - parse ecogesture to userEcogesture and launch it + *launchAction - parse ecogesture to UserAction and launch it @param {Ecogesture} Ecogesture - @returns {UserEcogesture} + @returns {UserAction} */ - public launchAction(ecogesture: Ecogesture): UserEcogesture { - const userEcogesture: UserEcogesture = { + public launchAction(ecogesture: Ecogesture): UserAction { + const UserAction: UserAction = { ...ecogesture, startDate: DateTime.local().setZone('utc', { keepLocalTime: true, }), - state: UserEcogestureState.ONGOING, + state: UserActionState.ONGOING, } - return userEcogesture + return UserAction } }