Ver código fonte

update validator vendor & city

pearlgw 2 meses atrás
pai
commit
4e591d6c73

+ 2 - 2
src/controllers/admin/CityController.js

@@ -3,7 +3,7 @@ const { CityResource } = require('../../resources/admin/city/CityResource.js');
3 3
 const cityService = require('../../services/admin/CityService.js');
4 4
 const { PaginationParam } = require('../../utils/PaginationParams.js');
5 5
 const { errorResponse, messageSuccessResponse } = require('../../utils/Response.js');
6
-const { validateStoreCityRequest } = require('../../validators/admin/city/CityValidators.js');
6
+const { validateStoreCityRequest, validateUpdateCityRequest } = require('../../validators/admin/city/CityValidators.js');
7 7
 
8 8
 exports.getAllCity = async (req, res) => {
9 9
     try {
@@ -42,7 +42,7 @@ exports.storeCity = async (req, res) => {
42 42
 exports.updateCity = async (req, res) => {
43 43
     try {
44 44
         const id = req.params.id;
45
-        const validatedData = validateStoreCityRequest(req.body);
45
+        const validatedData = validateUpdateCityRequest(req.body);
46 46
         await cityService.updateCityService(validatedData, id, req);
47 47
         return messageSuccessResponse(res, 'Success update city');
48 48
     } catch (err) {

+ 2 - 2
src/controllers/admin/VendorController.js

@@ -4,7 +4,7 @@ const vendorService = require('../../services/admin/VendorService.js');
4 4
 const { ListResponse } = require('../../utils/ListResponse.js');
5 5
 const { PaginationParam } = require('../../utils/PaginationParams.js');
6 6
 const { errorResponse, successResponse, messageSuccessResponse } = require('../../utils/Response.js');
7
-const { validateStoreVendorRequest } = require('../../validators/sales/vendor/VendorValidators.js');
7
+const { validateStoreVendorRequest, validateUpdateVendorRequest } = require('../../validators/admin/vendor/VendorValidators.js');
8 8
 
9 9
 exports.getAllVendor = async (req, res) => {
10 10
     try {
@@ -43,7 +43,7 @@ exports.storeVendor = async (req, res) => {
43 43
 exports.updateVendor = async (req, res) => {
44 44
     try {
45 45
         const id = req.params.id;
46
-        const validatedData = validateStoreVendorRequest(req.body);
46
+        const validatedData = validateUpdateVendorRequest(req.body);
47 47
         await vendorService.updateVendorService(validatedData, id, req);
48 48
         return messageSuccessResponse(res, 'Success update vendor');
49 49
     } catch (err) {

+ 5 - 3
src/services/admin/CityService.js

@@ -53,9 +53,11 @@ exports.updateCityService = async (validateData, id, req) => {
53 53
         throw new HttpException("Data city not found", 404);
54 54
     }
55 55
 
56
-    const province = await ProvinceRepository.findById(validateData.province_id);
57
-    if (!province) {
58
-        throw new HttpException('Province not found', 404);
56
+    if (validateData.province_id) {
57
+        const province = await ProvinceRepository.findById(validateData.province_id);
58
+        if (!province) {
59
+            throw new HttpException('Province not found', 404);
60
+        }
59 61
     }
60 62
 
61 63
     const data = await CityRepository.update(id, validateData);

+ 10 - 8
src/services/admin/VendorService.js

@@ -62,15 +62,17 @@ exports.updateVendorService = async (validateData, id, req) => {
62 62
         throw new HttpException("Data vendor not found", 404);
63 63
     }
64 64
 
65
-    const name_vendor = await prisma.vendor.findFirst({
66
-        where: {
67
-            name: validateData.name,
68
-            deletedAt: null
65
+    if (validateData.name && validateData.name !== vendor.name) {
66
+        const name_vendor = await prisma.vendor.findFirst({
67
+            where: {
68
+                name: validateData.name,
69
+                deletedAt: null
70
+            }
71
+        });
72
+
73
+        if (name_vendor) {
74
+            throw new HttpException("Vendor name must be unique", 400);
69 75
         }
70
-    });
71
-
72
-    if (name_vendor) {
73
-        throw new HttpException("Vendor name must be unique", 400);
74 76
     }
75 77
 
76 78
     const payload = {

+ 23 - 0
src/validators/admin/city/CityValidators.js

@@ -21,4 +21,27 @@ exports.validateStoreCityRequest = (body) => {
21 21
         name: name.trim(),
22 22
         province_id: province_id.trim()
23 23
     };
24
+};
25
+
26
+exports.validateUpdateCityRequest = (body) => {
27
+    const { name, province_id } = body;
28
+
29
+    // const errors = {};
30
+
31
+    // if (!name || name.trim() === '') {
32
+    //     errors.name = ['City name is required'];
33
+    // }
34
+
35
+    // if (!province_id || province_id.trim() === '') {
36
+    //     errors.province_id = ['Province ID is required'];
37
+    // }
38
+
39
+    // if (Object.keys(errors).length > 0) {
40
+    //     throw new HttpException(errors, 422);
41
+    // }
42
+
43
+    return {
44
+        name,
45
+        province_id
46
+    };
24 47
 };

+ 34 - 0
src/validators/admin/vendor/VendorValidators.js

@@ -32,4 +32,38 @@ exports.validateStoreVendorRequest = (body) => {
32 32
         weaknesses: weaknesses.trim(),
33 33
         website: website.trim(),
34 34
     };
35
+};
36
+
37
+exports.validateUpdateVendorRequest = (body) => {
38
+    const { name, name_pt, strengths, weaknesses, website } = body;
39
+
40
+    // const errors = {};
41
+
42
+    // if (!name || name.trim() === '') {
43
+    //     errors.name = ['Vendor name is required'];
44
+    // }
45
+    // if (!name_pt || name_pt.trim() === '') {
46
+    //     errors.name_pt = ['Vendor name pt is required'];
47
+    // }
48
+    // if (!strengths || strengths.trim() === '') {
49
+    //     errors.strengths = ['Vendor strengths is required'];
50
+    // }
51
+    // if (!weaknesses || weaknesses.trim() === '') {
52
+    //     errors.weaknesses = ['Vendor weaknesses is required'];
53
+    // }
54
+    // if (!website || website.trim() === '') {
55
+    //     errors.website = ['Vendor website is required'];
56
+    // }
57
+
58
+    // if (Object.keys(errors).length > 0) {
59
+    //     throw new HttpException(errors, 422);
60
+    // }
61
+
62
+    return {
63
+        name,
64
+        name_pt,
65
+        strengths,
66
+        weaknesses,
67
+        website,
68
+    };
35 69
 };