Parcourir la source

Merge branch 'update_fitur_sales' of gayuh/radar_farmagitechs into master

gayuh il y a 2 mois
Parent
commit
f2c09219aa

+ 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
 };

+ 41 - 41
src/validators/admin/sales/SalesValidators.js

@@ -68,61 +68,61 @@ exports.validateCreateSalesRequest = (body) => {
68 68
 
69 69
 exports.validateUpdateSalesRequest = (body) => {
70 70
     const { email, firstname, lastname, password, province_ids } = body;
71
-    const errors = {};
71
+    // const errors = {};
72 72
 
73
-    if (!email || email.trim() === '') {
74
-        errors.email = ['Email is required'];
75
-    }
73
+    // if (!email || email.trim() === '') {
74
+    //     errors.email = ['Email is required'];
75
+    // }
76 76
 
77
-    if (!firstname || firstname.trim() === '') {
78
-        errors.firstname = ['First name is required'];
79
-    }
77
+    // if (!firstname || firstname.trim() === '') {
78
+    //     errors.firstname = ['First name is required'];
79
+    // }
80 80
 
81
-    if (!lastname || lastname.trim() === '') {
82
-        errors.lastname = ['Last name is required'];
83
-    }
81
+    // if (!lastname || lastname.trim() === '') {
82
+    //     errors.lastname = ['Last name is required'];
83
+    // }
84 84
 
85
-    if (!password || password.trim().length === 0) {
86
-        errors.password = ['Password is required'];
87
-    } else {
88
-        const trimmed = password.trim();
85
+    // if (!password || password.trim().length === 0) {
86
+    //     errors.password = ['Password is required'];
87
+    // } else {
88
+    //     const trimmed = password.trim();
89 89
 
90
-        const messages = [];
90
+    //     const messages = [];
91 91
 
92
-        if (trimmed.length < 8) {
93
-            messages.push('Password must be at least 8 characters');
94
-        }
92
+    //     if (trimmed.length < 8) {
93
+    //         messages.push('Password must be at least 8 characters');
94
+    //     }
95 95
 
96
-        if (!/[A-Z]/.test(trimmed)) {
97
-            messages.push('Password must contain uppercase letter');
98
-        }
96
+    //     if (!/[A-Z]/.test(trimmed)) {
97
+    //         messages.push('Password must contain uppercase letter');
98
+    //     }
99 99
 
100
-        if (!/[0-9]/.test(trimmed)) {
101
-            messages.push('Password must contain digit');
102
-        }
100
+    //     if (!/[0-9]/.test(trimmed)) {
101
+    //         messages.push('Password must contain digit');
102
+    //     }
103 103
 
104
-        if (!/[^a-zA-Z0-9]/.test(trimmed)) {
105
-            messages.push('Password must contain special character');
106
-        }
104
+    //     if (!/[^a-zA-Z0-9]/.test(trimmed)) {
105
+    //         messages.push('Password must contain special character');
106
+    //     }
107 107
 
108
-        if (messages.length > 0) {
109
-            errors.password = messages;
110
-        }
111
-    }
108
+    //     if (messages.length > 0) {
109
+    //         errors.password = messages;
110
+    //     }
111
+    // }
112 112
 
113
-    if (!Array.isArray(province_ids) || province_ids.length === 0) {
114
-        errors.province_ids = ['At least one province must be selected'];
115
-    }
113
+    // if (!Array.isArray(province_ids) || province_ids.length === 0) {
114
+    //     errors.province_ids = ['At least one province must be selected'];
115
+    // }
116 116
 
117
-    if (Object.keys(errors).length > 0) {
118
-        throw new HttpException(errors, 422);
119
-    }
117
+    // if (Object.keys(errors).length > 0) {
118
+    //     throw new HttpException(errors, 422);
119
+    // }
120 120
 
121 121
     return {
122
-        email: email.trim(),
123
-        firstname: firstname.trim(),
124
-        lastname: lastname.trim(),
125
-        password: password.trim(),
122
+        email,
123
+        firstname,
124
+        lastname,
125
+        password,
126 126
         province_ids
127 127
     };
128 128
 };

+ 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
 };