@things-factory/warehouse-base 4.3.512 → 4.3.514

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -155,7 +155,7 @@ async function createLocation(location, context) {
155
155
  const { domain, user, tx } = context.state;
156
156
  const locationRepository = tx.getRepository(location_1.Location);
157
157
  const warehouseRepository = tx.getRepository(warehouse_1.Warehouse);
158
- const foundLocation = await tx.getRepository(location_1.Location).findOne({
158
+ const foundLocation = await locationRepository.findOne({
159
159
  where: [
160
160
  {
161
161
  domain,
@@ -171,23 +171,70 @@ async function createLocation(location, context) {
171
171
  zone: location.zone,
172
172
  column: location.column,
173
173
  shelf: location.shelf
174
+ },
175
+ {
176
+ domain,
177
+ name: location.name
174
178
  }
175
179
  ]
176
180
  });
181
+ //name found in db is the same as the one passed by the user
182
+ if (foundLocation && (foundLocation === null || foundLocation === void 0 ? void 0 : foundLocation.id) && (foundLocation === null || foundLocation === void 0 ? void 0 : foundLocation.name) === (location === null || location === void 0 ? void 0 : location.name)) {
183
+ throw new Error(`Duplicates name found: ${foundLocation.name}`);
184
+ }
177
185
  if (foundLocation) {
178
- throw new Error('Existing location found');
186
+ throw new Error(`Existing location found: ${foundLocation.name}`);
179
187
  }
180
188
  return await locationRepository.save(Object.assign(Object.assign({}, location), { warehouse: await warehouseRepository.findOne(location.warehouse.id), domain, creator: user, updater: user }));
181
189
  }
182
190
  exports.createLocation = createLocation;
183
191
  async function updateLocation(id, patch, context) {
184
- const { user, tx } = context.state;
192
+ var _a, _b, _c, _d;
193
+ const { user, domain, tx } = context.state;
185
194
  const locationRepository = tx.getRepository(location_1.Location);
186
195
  const warehouseRepository = tx.getRepository(warehouse_1.Warehouse);
187
196
  const location = await locationRepository.findOne(id);
188
197
  if (patch.warehouse && patch.warehouse.id) {
189
198
  patch.warehouse = await warehouseRepository.findOne(patch.warehouse.id);
190
199
  }
200
+ const propertiesValidation = {
201
+ keys: ['zone', 'shelf', 'row', 'column'],
202
+ changeName: false,
203
+ changeZone: false
204
+ };
205
+ Object.keys(patch).forEach(prop => {
206
+ if (propertiesValidation.keys.includes(prop)) {
207
+ location[prop] = patch[prop];
208
+ propertiesValidation.changeZone = true;
209
+ }
210
+ if (['name'].includes(prop)) {
211
+ location[prop] = patch[prop];
212
+ propertiesValidation.changeName = true;
213
+ }
214
+ });
215
+ let queryConditions = '';
216
+ //if got changes to name but no changes to the zone,row,column and shelf
217
+ if (propertiesValidation.changeName) {
218
+ queryConditions += `or (name = $2)`;
219
+ }
220
+ //if name no changes, but have changes to zone,row,column and shelf
221
+ if (propertiesValidation.changeZone) {
222
+ queryConditions += `or (zone = $3 AND "row" = $4 AND "column" = $5 AND shelf = $6)`;
223
+ }
224
+ //validation if no changes to name,zone,row,column,shelf but have changes to type,status
225
+ if (queryConditions !== '') {
226
+ const foundLocation = await tx.query(`Select * from locations
227
+ where domain_id = $1
228
+ and ((name = $2 AND zone = $3 AND "row" = $4 AND "column" = $5 AND shelf = $6) ${queryConditions})
229
+ limit 1
230
+ `, [domain.id, location.name, location.zone, location.row, location.column, location.shelf]);
231
+ if ((foundLocation === null || foundLocation === void 0 ? void 0 : foundLocation.length) > 0 && ((_a = foundLocation[0]) === null || _a === void 0 ? void 0 : _a.name) === (patch === null || patch === void 0 ? void 0 : patch.name) && ((_b = foundLocation[0]) === null || _b === void 0 ? void 0 : _b.id) !== id) {
232
+ throw new Error(`Duplicates name found: ${(_c = foundLocation[0]) === null || _c === void 0 ? void 0 : _c.name}`);
233
+ }
234
+ if ((foundLocation === null || foundLocation === void 0 ? void 0 : foundLocation.length) > 0) {
235
+ throw new Error(`Existing location found: ${(_d = foundLocation[0]) === null || _d === void 0 ? void 0 : _d.name}`);
236
+ }
237
+ }
191
238
  return await locationRepository.save(Object.assign(Object.assign(Object.assign({}, location), patch), { updater: user }));
192
239
  }
193
240
  exports.updateLocation = updateLocation;
@@ -1 +1 @@
1
- {"version":3,"file":"location-mutation.js","sourceRoot":"","sources":["../../../server/service/location/location-mutation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"location-mutation.js","sourceRoot":"","sources":["../../../server/service/location/location-mutation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/warehouse-base",
3
- "version": "4.3.512",
3
+ "version": "4.3.514",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -32,5 +32,5 @@
32
32
  "@things-factory/product-base": "^4.3.495",
33
33
  "@things-factory/setting-base": "^4.3.452"
34
34
  },
35
- "gitHead": "4275f848e44681880ac2651ca4e630aa2b711edc"
35
+ "gitHead": "35fd9143a02a229fbc164b30e6204f16c27f6a89"
36
36
  }
@@ -1,24 +1,12 @@
1
- import {
2
- Arg,
3
- Ctx,
4
- Directive,
5
- Mutation,
6
- Resolver
7
- } from 'type-graphql'
8
- import {
9
- EntityManager,
10
- Repository
11
- } from 'typeorm'
1
+ import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
2
+ import { EntityManager, Repository } from 'typeorm'
12
3
 
13
4
  import { User } from '@things-factory/auth-base'
14
5
  import { Domain } from '@things-factory/shell'
15
6
 
16
7
  import { Location } from '../location/location'
17
8
  import { Warehouse } from '../warehouse/warehouse'
18
- import {
19
- LocationPatch,
20
- NewLocation
21
- } from './location-types'
9
+ import { LocationPatch, NewLocation } from './location-types'
22
10
 
23
11
  @Resolver(Location)
24
12
  export class LocationMutation {
@@ -130,7 +118,7 @@ export async function createLocation(location: NewLocation, context: any) {
130
118
  const locationRepository: Repository<Location> = tx.getRepository(Location)
131
119
  const warehouseRepository: Repository<Warehouse> = tx.getRepository(Warehouse)
132
120
 
133
- const foundLocation: Location = await tx.getRepository(Location).findOne({
121
+ const foundLocation: Location = await locationRepository.findOne({
134
122
  where: [
135
123
  {
136
124
  domain,
@@ -146,12 +134,21 @@ export async function createLocation(location: NewLocation, context: any) {
146
134
  zone: location.zone,
147
135
  column: location.column,
148
136
  shelf: location.shelf
137
+ },
138
+ {
139
+ domain,
140
+ name: location.name
149
141
  }
150
142
  ]
151
143
  })
152
144
 
145
+ //name found in db is the same as the one passed by the user
146
+ if (foundLocation && foundLocation?.id && foundLocation?.name === location?.name) {
147
+ throw new Error(`Duplicates name found: ${foundLocation.name}`)
148
+ }
149
+
153
150
  if (foundLocation) {
154
- throw new Error('Existing location found')
151
+ throw new Error(`Existing location found: ${foundLocation.name}`)
155
152
  }
156
153
 
157
154
  return await locationRepository.save({
@@ -164,7 +161,7 @@ export async function createLocation(location: NewLocation, context: any) {
164
161
  }
165
162
 
166
163
  export async function updateLocation(id: string, patch: LocationPatch, context: any) {
167
- const { user, tx }: { user: User; tx: EntityManager } = context.state
164
+ const { user, domain, tx }: { user: User; domain: Domain; tx: EntityManager } = context.state
168
165
 
169
166
  const locationRepository: Repository<Location> = tx.getRepository(Location)
170
167
  const warehouseRepository: Repository<Warehouse> = tx.getRepository(Warehouse)
@@ -174,6 +171,56 @@ export async function updateLocation(id: string, patch: LocationPatch, context:
174
171
  patch.warehouse = await warehouseRepository.findOne(patch.warehouse.id)
175
172
  }
176
173
 
174
+ const propertiesValidation = {
175
+ keys: ['zone', 'shelf', 'row', 'column'],
176
+ changeName: false,
177
+ changeZone: false
178
+ }
179
+
180
+ Object.keys(patch).forEach(prop => {
181
+ if (propertiesValidation.keys.includes(prop)) {
182
+ location[prop] = patch[prop]
183
+ propertiesValidation.changeZone = true
184
+ }
185
+
186
+ if (['name'].includes(prop)) {
187
+ location[prop] = patch[prop]
188
+ propertiesValidation.changeName = true
189
+ }
190
+ })
191
+
192
+ let queryConditions = ''
193
+
194
+ //if got changes to name but no changes to the zone,row,column and shelf
195
+ if (propertiesValidation.changeName) {
196
+ queryConditions += `or (name = $2)`
197
+ }
198
+
199
+ //if name no changes, but have changes to zone,row,column and shelf
200
+ if (propertiesValidation.changeZone) {
201
+ queryConditions += `or (zone = $3 AND "row" = $4 AND "column" = $5 AND shelf = $6)`
202
+ }
203
+
204
+ //validation if no changes to name,zone,row,column,shelf but have changes to type,status
205
+ if (queryConditions !== '') {
206
+ const foundLocation = await tx.query(
207
+ `Select * from locations
208
+ where domain_id = $1
209
+ and ((name = $2 AND zone = $3 AND "row" = $4 AND "column" = $5 AND shelf = $6) ${queryConditions})
210
+ limit 1
211
+ `,
212
+ [domain.id, location.name, location.zone, location.row, location.column, location.shelf]
213
+ )
214
+
215
+ if (foundLocation?.length > 0 && foundLocation[0]?.name === patch?.name && foundLocation[0]?.id !== id) {
216
+ throw new Error(`Duplicates name found: ${foundLocation[0]?.name}`)
217
+ }
218
+
219
+ if (foundLocation?.length > 0) {
220
+ throw new Error(`Existing location found: ${foundLocation[0]?.name}`)
221
+ }
222
+ }
223
+
177
224
  return await locationRepository.save({
178
225
  ...location,
179
226
  ...patch,