فهرست منبع

almost done edite bar

unknown 2 سال پیش
والد
کامیت
cb896bb5eb
6فایلهای تغییر یافته به همراه39 افزوده شده و 19 حذف شده
  1. 0 4
      controllers/chats.js
  2. 11 14
      controllers/contacts.js
  3. 6 0
      model/chat.js
  4. 9 0
      model/contact.js
  5. 2 1
      routes/contacts.js
  6. 11 0
      validation/contact.js

+ 0 - 4
controllers/chats.js

@@ -79,16 +79,12 @@ const startChat = async (req, res, next) => {
 		} = user;
 		if (companion && (isUser || isCompanion)) {
 			await ChatModel.update(isUser._id, {
-				name,
-				lastName,
 				avatarUrl,
 				color,
 				online,
 				number,
 			});
 			await ChatModel.update(isCompanion._id, {
-				name: Name,
-				lastName: LastName,
 				avatarUrl: AvatarUrl,
 				color: Color,
 				online: Online,

+ 11 - 14
controllers/contacts.js

@@ -1,5 +1,6 @@
 const ContactModel = require('../model/contact');
 const UserModel = require('../model/user');
+const ChatModel = require('../model/chat');
 
 const listContacts = async (req, res, next) => {
 	try {
@@ -74,18 +75,14 @@ const addContact = async (req, res, next) => {
 	}
 };
 
-const removeContact = async (req, res, next) => {
+const updateContact = async (req, res, next) => {
 	try {
-		const id = req.params.id;
-		const userId = req.user.id;
-		const contact = await ContactModel.remove(id, userId);
-		if (contact) {
-			return res.json({
-				status: 'success',
-				code: 200,
-				data: {
-					contact,
-				},
+		const { id, _id, name, lastName } = req.body;
+		const contact = await ContactModel.update(id, { name, lastName });
+		const chat = await ChatModel.update(_id, { name, lastName });
+		if (contact && chat) {
+			return res.status(200).json({
+				data: { _id },
 			});
 		} else {
 			return res.status(404).json({
@@ -99,13 +96,13 @@ const removeContact = async (req, res, next) => {
 	}
 };
 
-const updateContact = async (req, res, next) => {
+const removeContact = async (req, res, next) => {
 	try {
 		const id = req.params.id;
 		const userId = req.user.id;
-		const contact = await ContactModel.update(id, userId, req.body);
+		const contact = await ContactModel.remove(id, userId);
 		if (contact) {
-			return res.status(200).json({
+			return res.json({
 				status: 'success',
 				code: 200,
 				data: {

+ 6 - 0
model/chat.js

@@ -41,9 +41,15 @@ const update = async (id, obj) => {
 	return chat;
 };
 
+const updateByOwner = async (id, userId, obj) => {
+	const chat = await Chat.updateOne({ _id: id, owner: userId }, { ...obj });
+	return chat;
+};
+
 module.exports = {
 	getList,
 	getByField,
 	add,
 	update,
+	updateByOwner,
 };

+ 9 - 0
model/contact.js

@@ -52,10 +52,19 @@ const remove = async (id, userId) => {
 	return removedContact;
 };
 
+const update = async (id, body) => {
+	return await Contact.findByIdAndUpdate(
+		{ _id: id },
+		{ ...body },
+		{ new: true }
+	);
+};
+
 module.exports = {
 	getList,
 	getByField,
 	getById,
 	add,
 	remove,
+	update,
 };

+ 2 - 1
routes/contacts.js

@@ -5,7 +5,8 @@ const controllers = require('../controllers/contacts');
 const validation = require('../validation/contact');
 router
 	.get('/', guard, controllers.listContacts)
-	.post('/', guard, validation.createContact, controllers.addContact);
+	.post('/', guard, validation.createContact, controllers.addContact)
+	.patch('/', guard, validation.updateContact, controllers.updateContact);
 
 router
 	.get('/:number', guard, controllers.getContactById)

+ 11 - 0
validation/contact.js

@@ -6,6 +6,17 @@ const schemaCreateContact = Joi.object({
 	number: Joi.string().min(8).max(14).required(),
 });
 
+const schemaUpdateContact = Joi.object({
+	id: Joi.string().required(),
+	_id: Joi.string().required(),
+	name: Joi.string().min(3).max(30).optional().trim().optional(),
+	lastName: Joi.string().min(3).max(30).optional().trim().optional(),
+}).min(2);
+
 module.exports.createContact = (req, _res, next) => {
 	return validate(schemaCreateContact, req.body, next);
 };
+
+module.exports.updateContact = (req, _res, next) => {
+	return validate(schemaUpdateContact, req.body, next);
+};