send direct message to client users from presupuesto,facturas or pedido forms

This commit is contained in:
amazuecos
2024-12-15 17:57:22 +01:00
parent 7998e2424e
commit 4cacf28d49
12 changed files with 288 additions and 12 deletions

View File

@ -7,6 +7,8 @@ class Alert {
this.icon = this.item.find(".icon-alert")
this.iconSuccess = "ti-circle-check"
this.iconError = "ti-exclamation-mark"
this.iconInfo = "ti-question-mark"
@ -14,6 +16,7 @@ class Alert {
setIcon(iconClass){
this.icon.removeClass(this.iconSuccess)
this.icon.removeClass(this.iconError)
this.icon.removeClass(this.iconInfo)
this.icon.addClass(iconClass)
}
setAsError() {
@ -24,16 +27,25 @@ class Alert {
}
setAsSuccess() {
this.item.removeClass("alert-danger")
this.item.removeClass("alert-warning")
this.item.removeClass("alert-info")
this.item.addClass("alert-success")
this.setIcon(this.iconSuccess)
}
setAsWarning() {
this.item.removeClass("alert-success")
this.item.removeClass("alert-danger")
this.item.removeClass("alert-info")
this.item.addClass("alert-warning")
this.setIcon(this.iconError)
}
setAsInfo() {
this.item.removeClass("alert-*")
this.item.removeClass("alert-success")
this.item.removeClass("alert-danger")
this.item.addClass("alert-warning")
this.item.addClass("alert-info")
this.setIcon(this.iconInfo)
}
show() {
this.item.removeClass("d-none")
@ -48,6 +60,16 @@ class Alert {
this.body.append(content)
}
setErrors() { }
reset(){
this.item.removeClass("alert-success")
this.item.removeClass("alert-danger")
this.item.removeClass("alert-warning")
this.item.removeClass("alert-info")
this.item.setContent("")
this.item.setHeadingTitle("")
this.item.hide()
}
}
export default Alert;

View File

@ -0,0 +1,85 @@
import Ajax from "../ajax.js";
import Modal from "../modal.js"
import ClassSelect from "../select2.js";
import Alert from "../alerts/alert.js";
class ModalDirectMessageClient {
constructor(model="presupuesto",domItem = null) {
this.item = domItem
this.modal = new Modal(domItem)
this.alert = new Alert(this.item.find("#alertDirectMessage"))
this.modelId = this.item.data("id");
this.selectItem = this.item.find("#select-clients")
this.model = model
this.selectClientUser = new ClassSelect(this.selectItem,`/chat/direct/client/users/select/${this.model}/${this.modelId}`,"Seleccione contacto",true)
this.messageInput = this.item.find("#new-direct-message-cliente-text")
this.title = this.item.find("#new-direct-message-cliente-title")
this.btnSubmitMessage = this.item.find("#submit-new-direct-message-client")
}
init() {
this.selectClientUser.init()
this.modal.item.on("hidden.bs.modal",this.reset_close.bind(this))
this.modal.item.on("shown.bs.modal",this.reset_show.bind(this))
this.btnSubmitMessage.on("click",this._handleStoreChatDirectMessage.bind(this))
}
reset(){
this.messageInput.val("")
this.title.val("")
this.selectClientUser.reset();
}
reset_close(){
this.messageInput.val("")
this.title.val("")
this.selectClientUser.reset();
this.alert.hide()
this.alert.setHeadingTitle("")
this.alert.setContent("")
this.alert.setAsSuccess()
}
reset_show(){
this.messageInput.val("")
this.title.val("")
this.selectClientUser.reset();
this.alert.hide()
this.alert.setHeadingTitle("")
this.alert.setContent("")
this.alert.setAsSuccess()
}
_handleStoreChatDirectMessage() {
const data = { "message": this.messageInput.val(), "title": this.title.val() , "users" : this.selectClientUser.getVal() }
if (data.message) {
const ajax = new Ajax(
`/messages/direct`,
data,
null,
this._handleStoreNewDirectMessageSuccess.bind(this),
this._handleStoreNewDirectMessageError.bind(this)
)
ajax.post()
}else{
this.alert.show()
this.alert.setAsWarning()
this.alert.setHeadingTitle("Tienes que añadir un mensaje")
}
}
_handleStoreNewDirectMessageSuccess(response) {
try {
this.alert.setAsSuccess()
this.alert.setHeadingTitle(response.message)
this.alert.setContent(response.message)
this.alert.show()
} catch (error) {
} finally {
this.reset()
}
}
_handleStoreNewDirectMessageError(error){
this.alert.setHeadingTitle(error.message)
this.alert.setAsError()
this.alert.setContent(JSON.stringify(error.errors))
this.alert.show()
}
}
export default ModalDirectMessageClient

View File

@ -1,5 +1,6 @@
import Chat from '../components/chat.js'
import InternalMessages from "../components/internalMessagesSection.js"
import ModalDirectMessageClient from '../components/modals/modalDirectMessageClient.js'
$(document).ready(() => {
let chat = new Chat($("#chat-factura"))
@ -9,5 +10,9 @@ $(document).ready(() => {
let internalMessages = new InternalMessages($("#internal_messages_chat"))
internalMessages.init()
}
let modalDirectMessageClient = new ModalDirectMessageClient("factura", $("#modalNewDirectMessageClient"))
modalDirectMessageClient.init()
$("#direct-message-cliente").on("click",() => {
modalDirectMessageClient.modal.show()
})
})

View File

@ -1,5 +1,6 @@
import Chat from '../components/chat.js'
import InternalMessages from "../components/internalMessagesSection.js"
import ModalDirectMessageClient from '../components/modals/modalDirectMessageClient.js'
$(document).ready(() => {
let chat = new Chat($("#chat-pedido"))
@ -9,5 +10,10 @@ $(document).ready(() => {
let internalMessages = new InternalMessages($("#internal_messages_chat"))
internalMessages.init()
}
let modalDirectMessageClient = new ModalDirectMessageClient("pedido", $("#modalNewDirectMessageClient"))
modalDirectMessageClient.init()
$("#direct-message-cliente").on("click",() => {
modalDirectMessageClient.modal.show()
})
})

View File

@ -1,13 +1,18 @@
import Chat from '../components/chat.js'
import InternalMessages from "../components/internalMessagesSection.js"
$(document).ready(() => {
import ModalDirectMessageClient from '../components/modals/modalDirectMessageClient.js'
$(function () {
let chat = new Chat($("#chat-presupuesto"))
chat.init()
chat.initPresupuesto()
if($("#internal_messages_chat").length > 0){
let internalMessages = new InternalMessages($("#internal_messages_chat"))
internalMessages.init()
if ($("#internal_messages_chat").length > 0) {
let internalMessages = new InternalMessages($("#internal_messages_chat"))
internalMessages.init()
let modalDirectMessageClient = new ModalDirectMessageClient("presupuesto", $("#modalNewDirectMessageClient"))
modalDirectMessageClient.init()
$("#direct-message-cliente").on("click",() => {
modalDirectMessageClient.modal.show()
})
}
})