Files
FE_CPONE/test/vuex/one-mcu-agreement/modules/samplecall.js
2026-04-27 10:13:31 +07:00

918 lines
36 KiB
JavaScript

// 1 => LOADING
// 2 => DONE
// 3 => ERROR
import * as api from "../api/samplecall.js"
export default {
namespaced: true,
state: {
trx_id:0,
trx_numbering:'NO.TRANSAKSI',
last_id:-1,
last_saved_id:-1,
x_addr_id:0,
act:'edit',
act_addr:'new',
get_data_status:0,
search_transaction: 0,
search_status: 0,
search_error_message: '',
preffix:'',
transaction_name:'',
suffix:'',
transactions: [],
selected_transaction: {},
companies:[],
selected_company:{},
filter_companies:[],
filter_selected_company:{id:0,name:'Semua Perusahaan'},
sampletypes:[],
selected_sampletype:{},
total_transactions:0,
transaction_address: [],
stations:[],
selected_station:{},
statuses:[],
selected_status:{},
transaction_date:moment(new Date()).format('DD-MM-YYYY'),
transaction_time:moment(new Date()).format("hh:mm"),
phone:'',
hp:'',
email:'',
pj:'N',
dpj:'N',
clinic:'N',
is_default:'N',
marketing_confirm:'N',
save_status: 0,
btn_save_seen: true,
pgrs_save: false,
save_error_message: '',
no_save: 0,
open_alert_confirmation:false,
alert_success: false,
msg_success: "",
dialog_success: false,
dialog_confirmation_delete: false,
msg_confirmation_delete: "",
dialog_confirmation_delete_addr: false,
msg_confirmation_delete_addr: "",
autocomplete_status:0,
dialog_form_address: false,
label_address:'',
addresses:[],
cities:[],
city_address:{},
districts:[],
district_address:{},
kelurahans:[],
kelurahan_address:{},
description_address:'',
errors:[],
dialog_action:false,
msg_action:'',
current_page:1,
total_page:1,
autocomplete_status:0,
agreement_types:[],
selected_agreement_type:{},
mou:[],
selected_mou:{},
company_cpname:"",
company_cphp:"",
participants:"",
resulttype_report:"",
special_requirement:"",
implementation_date:"",
implementation_time:"",
implementation_place:"",
setupinstrument_time:"",
normal_price:"",
agreement_price:"",
discount_price:"",
billing_system:"",
duedate:"",
sendresult_date:"",
sendresult_place:"",
sendresult_cpname:"",
sendresult_cphp:"",
marketing_staff:"",
notes:"",
foods:"",
selected_month: { id: 1, name: "Januari" },
selected_week: { id: 1, name: "Pertama" },
selected_day: { id: 1, name: "Minggu" },
xmonth:0,
xweek:0,
xday:0,
xhour:"",
flagattime:false,
attime:"12:00",
readonlyattime:true,
readonlyhour:false,
formulas:[{'code':'BMI','fx':'count_bmi'}],
start_date:moment(new Date()).format('YYYY-MM-DD'),
end_date:moment(new Date()).format('YYYY-MM-DD'),
},
mutations: {
update_formulas(state,val){
state.formulas = val
},
update_xmonth(state,val){
state.xmonth = val
},
update_xmonth(state,val){
state.xmonth = val
},
update_xweek(state,val){
state.xweek = val
},
update_xday(state,val){
state.xday = val
},
update_xhour(state,val){
state.xhour = val
},
update_flagattime(state,val){
state.flagattime = val
},
update_attime(state,val){
state.attime = val
},
update_readonlyattime(state,val){
state.readonlyattime = val
},
update_readonlyhour(state,val){
state.readonlyhour = val
},
update_selected_month(state,val){
state.selected_month = val
},
update_selected_week(state,val){
state.selected_week = val
},
update_selected_day(state,val){
state.selected_day = val
},
update_trx_id(state,val){
state.trx_id = val
},
update_trx_numbering(state,val){
state.trx_numbering = val
},
update_foods(state,val){
state.foods = val
},
update_notes(state,val){
state.notes = val
},
update_marketing_staff(state,val){
state.marketing_staff = val
},
update_sendresult_cphp(state,val){
state.sendresult_cphp = val
},
update_sendresult_cpname(state,val){
state.sendresult_cpname = val
},
update_sendresult_place(state,val){
state.sendresult_place = val
},
update_sendresult_date(state,val){
state.sendresult_date = val
},
update_duedate(state,val){
state.duedate = val
},
update_billing_system(state,val){
state.billing_system = val
},
update_discount_price(state,val){
state.discount_price = val
},
update_agreement_price(state,val){
state.agreement_price = val
},
update_normal_price(state,val){
state.normal_price = val
},
update_setupinstrument_time(state,val){
state.setupinstrument_time = val
},
update_implementation_place(state,val){
state.implementation_place = val
},
update_implementation_time(state,val){
state.implementation_time = val
},
update_implementation_date(state,val){
state.implementation_date = val
},
update_special_requirement(state,val){
state.special_requirement = val
},
update_resulttype_report(state,val){
state.resulttype_report = val
},
update_participants(state,val){
state.participants = val
},
update_company_cphp(state,val){
state.company_cphp = val
},
update_company_cpname(state,val){
state.company_cpname = val
},
update_mou(state,val){
state.mou = val
},
update_selected_mou(state,val){
state.selected_mou = val
},
update_agreement_types(state,val){
state.agreement_types = val
},
update_selected_agreement_type(state,val){
state.selected_agreement_type = val
},
update_autocomplete_status(state,val){
state.autocomplete_status = val
},
update_companies(state, val) {
state.companies = val
},
update_selected_company(state, val) {
state.selected_company = val
},
update_filter_companies(state, val) {
state.filter_companies = val
},
update_filter_selected_company(state, val) {
state.filter_selected_company = val
},
update_total_page(state, val) {
state.total_page = val
},
update_current_page(state, val) {
state.current_page = val
},
update_x_addr_id(state, val) {
state.x_addr_id = val
},
update_last_id(state, val) {
state.last_id = val
},
update_last_saved_id(state, val) {
state.last_saved_id = val
},
update_act(state, val) {
state.act = val
},
update_act_addr(state, val) {
state.act_addr = val
},
update_get_data_status(state, val) {
state.get_data_status = val
},
update_search_error_message(state, transaction) {
state.search_error_message = transaction
},
update_search_transaction(state, transaction) {
state.search_transaction = transaction
},
update_preffix(state, val) {
state.preffix = val
},
update_transaction_name(state, val) {
state.transaction_name = val
},
update_suffix(state, val) {
state.suffix = val
},
update_transactions(state, data) {
state.transactions = data
},
update_selected_transaction(state, val) {
state.selected_transaction = val
},
update_sampletypes(state, data) {
state.sampletypes = data
},
update_selected_sampletype(state, val) {
state.selected_sampletype = val
},
update_stations(state, val) {
state.stations = val
},
update_selected_station(state, val) {
state.selected_station = val
},
update_statuses(state, val) {
state.statuses = val
},
update_selected_status(state, val) {
state.selected_status = val
},
update_phone(state, val) {
state.phone = val
},
update_email(state, val) {
state.email = val
},
update_hp(state, val) {
state.hp = val
},
update_pj(state, val) {
state.pj = val
},
update_dpj(state, val) {
state.dpj = val
},
update_clinic(state, val) {
state.clinic = val
},
update_marketing_confirm(state, val) {
state.marketing_confirm = val
},
update_is_default(state, val) {
state.is_default = val
},
update_save_status(state, val) {
state.save_status = val
},
update_btn_save_seen(state, val) {
state.btn_save_seen = val
},
update_pgrs_save(state, val) {
state.pgrs_save = val
},
update_save_error_message(state, msg) {
state.save_error_message = ''
},
update_no_save(state, val) {
state.no_save = val
},
update_open_alert_confirmation(state, val) {
state.open_alert_confirmation = val
},
update_alert_success(state, val) {
state.alert_success = val
},
update_msg_success(state, val) {
state.msg_success = val
},
update_dialog_success(state, val) {
state.dialog_success = val
},
update_dialog_confirmation_delete(state, val) {
state.dialog_confirmation_delete = val
},
update_msg_confirmation_delete(state, val) {
state.msg_confirmation_delete = val
},
update_dialog_confirmation_delete_addr(state, val) {
state.dialog_confirmation_delete_addr = val
},
update_msg_confirmation_delete_addr(state, val) {
state.msg_confirmation_delete_addr = val
},
update_addresses(state, val) {
state.addresses = val
},
update_autocomplete_status(state,val){
state.autocomplete_status = val
},
update_dialog_form_address(state, val) {
state.dialog_form_address = val
},
update_label_address(state, val) {
state.label_address = val
},
update_cities(state, val) {
state.cities = val
},
update_city_address(state, val) {
state.city_address = val
},
update_districts(state, val) {
state.districts = val
},
update_district_address(state, val) {
state.district_address = val
},
update_kelurahans(state, val) {
state.kelurahans = val
},
update_kelurahan_address(state, val) {
state.kelurahan_address = val
},
update_description_address(state, val) {
state.description_address = val
},
update_search_status(state, val) {
state.search_status = val
},
update_errors(state, val) {
state.errors = val
},
update_total_transactions(state, val) {
state.total_transactions = val
},
update_dialog_action(state, val) {
state.dialog_action = val
},
update_msg_action(state, val) {
state.msg_action = val
},
update_start_date(state, val) {
state.start_date = val
},
update_end_date(state, val) {
state.end_date = val
},
},
actions: {
async search(context, prm) {
context.commit("update_search_transaction", 1)
try {
prm.token = one_token()
let resp = await api.search(prm)
if (resp.status != "OK") {
context.commit("update_search_transaction", 3)
context.commit("update_search_error_message", resp.message)
} else {
context.commit("update_search_transaction", 2)
context.commit("update_search_error_message", "")
let data = {
records: resp.data.records,
total: resp.data.total
}
context.commit("update_transactions", data.records)
context.commit("update_total_transactions", data.total)
//context.commit("update_total_page", data.total)
context.commit("update_no_save", 0)
if(prm.lastid === -1){
var pat = data.records[0]
if(data.records.length === 0){
context.commit("update_selected_transaction",{})
context.commit("update_trx_id",'0')
context.commit("update_trx_numbering","NO.TRANSAKSI")
context.commit("update_companies",[])
context.commit("update_selected_company", {})
context.commit("update_selected_agreement_type", {})
context.commit("update_mou", [])
context.commit("update_selected_mou", {})
context.commit("update_company_cpname", "")
context.commit("update_company_cphp", "")
context.commit("update_participants", "")
context.commit("update_resulttype_report", "")
context.commit("update_special_requirement", "")
context.commit("update_implementation_date", "")
context.commit("update_implementation_time", "")
context.commit("update_implementation_place", "")
context.commit("update_setupinstrument_time","")
context.commit("update_normal_price", "")
context.commit("update_agreement_price","")
context.commit("update_discount_price","")
context.commit("update_duedate", "")
context.commit("update_billing_system","")
context.commit("update_sendresult_date","")
context.commit("update_sendresult_place","")
context.commit("update_sendresult_cpname","")
context.commit("update_sendresult_cphp", "")
context.commit("update_marketing_staff", "")
context.commit("update_notes","")
context.commit("update_foods", "")
context.commit("update_xmonth", 0)
context.commit("update_xweek", 0)
context.commit("update_xday", 0)
context.commit("update_flagattime", false)
context.commit("update_attime","12:00")
context.commit("update_start_date",moment(new Date()).format('YYYY-MM-DD') )
context.commit("update_end_date",moment(new Date()).format('YYYY-MM-DD'))
}else{
var trx = data.records[0]
context.commit("update_selected_transaction",trx)
context.commit("update_trx_numbering",trx.trx_numbering)
context.commit("update_trx_id",trx.trx_id)
context.commit("update_companies",[{id:trx.Mcu_AgreementCustomerM_CompanyID,name:trx.M_CompanyName}])
context.commit("update_selected_company", {id:trx.Mcu_AgreementCustomerM_CompanyID,name:trx.M_CompanyName})
context.commit("update_selected_agreement_type", {id:trx.Mcu_AgreementScopeWorkMcu_AgreementTypeID,name:trx.Mcu_AgreementTypeName})
context.commit("update_mou", trx.mou)
context.commit("update_selected_mou", {id:trx.Mcu_AgreementCustomerM_MouID,name:trx.M_MouName})
context.commit("update_company_cpname", trx.Mcu_AgreementCustomerCpName)
context.commit("update_company_cphp", trx.Mcu_AgreementCustomerCpHp)
context.commit("update_participants", trx.Mcu_AgreementScopeWorkParticipants)
context.commit("update_resulttype_report", trx.Mcu_AgreementScopeWorkResultTypeReport)
context.commit("update_special_requirement", trx.Mcu_AgreementScopeWorkSpecialRequirements)
context.commit("update_implementation_date", trx.Mcu_AgreementImplementationDate)
context.commit("update_implementation_time", trx.Mcu_AgreementImplementationTime)
context.commit("update_implementation_place", trx.Mcu_AgreementImplementationPlace)
context.commit("update_setupinstrument_time", trx.Mcu_AgreementImplementationSetupInstumentTime)
context.commit("update_normal_price", trx.Mcu_AgreementPriceNormalPrice)
context.commit("update_agreement_price", trx.Mcu_AgreementPriceAgreementPrice)
context.commit("update_discount_price", trx.Mcu_AgreementPriceDiscount)
context.commit("update_duedate", trx.Mcu_AgreementPriceDueDate)
context.commit("update_billing_system", trx.Mcu_AgreementPriceBillingSystem)
context.commit("update_sendresult_date", trx.Mcu_AgreementSendResultDate)
context.commit("update_sendresult_place", trx.Mcu_AgreementSendResultPlace)
context.commit("update_sendresult_cpname", trx.Mcu_AgreementSendResultCPName)
context.commit("update_sendresult_cphp", trx.Mcu_AgreementSendResultCPHP)
context.commit("update_marketing_staff", trx.Mcu_AgreementMarketingName)
context.commit("update_notes", trx.Mcu_AgrrementNotesValue)
context.commit("update_foods", trx.Mcu_AgreementFacilityFood)
var flag_attime = trx.Mcu_AgreementPromiseFlagAtTime === 'N'?false:true
var xattime = trx.promise_time
context.commit("update_xmonth", trx.Mcu_AgreementPromiseMonth)
context.commit("update_xweek", trx.Mcu_AgreementPromiseWeek)
context.commit("update_xday", trx.Mcu_AgreementPromiseDay)
context.commit("update_flagattime", flag_attime)
context.commit("update_attime", xattime)
context.commit("update_start_date",trx.Mcu_AgreementPromiseStartDate )
context.commit("update_end_date",trx.Mcu_AgreementPromiseEndDate)
}
}
else{
context.commit("update_selected_transaction", data.records[prm.lastid])
var pat = data.records[prm.lastid]
context.dispatch("getsampletypes",{
orderid:pat.T_OrderHeaderID,
stationid: pat.T_SampleStationID,
statusid: pat.statusid
})
}
}
} catch (e) {
context.commit("update_search_transaction", 3)
context.commit("update_search_error_message", e.message)
console.log(e)
}
},
async getstationstatus(context,prm) {
context.commit("update_get_data_status",1)
try {
let resp= await api.getstationstatus(one_token())
if (resp.status != "OK") {
context.commit("update_get_data_status",3)
} else {
context.commit("update_get_data_status",2)
let data = {
records : resp.data.records,
total: resp.data.total
}
context.commit("update_stations",data.records.stations)
context.commit("update_selected_station",data.records.stations[0])
context.commit("update_statuses",data.records.statuses)
context.commit("update_selected_status",data.records.statuses[0])
prm.stationid = data.records.stations[0].id
prm.statusid = data.records.statuses[0].id
console.log(prm)
context.dispatch("search",prm)
}
} catch(e) {
context.commit("update_get_data_status",3)
}
},
async getagreementtype(context,prm) {
context.commit("update_get_data_status",1)
try {
let resp= await api.getagreementtype(one_token())
if (resp.status != "OK") {
context.commit("update_get_data_status",3)
} else {
context.commit("update_get_data_status",2)
let data = {
records : resp.data.records,
total: resp.data.total
}
context.commit("update_agreement_types",data.records)
}
} catch(e) {
context.commit("update_get_data_status",3)
}
},
async getmou(context,prm) {
context.commit("update_get_data_status",1)
try {
prm.token = one_token()
let resp= await api.getmou(prm)
if (resp.status != "OK") {
context.commit("update_get_data_status",3)
} else {
context.commit("update_get_data_status",2)
let data = {
records : resp.data.records,
total: resp.data.total
}
context.commit("update_mou",data.records)
context.commit("update_selected_mou",{})
}
} catch(e) {
context.commit("update_get_data_status",3)
}
},
async save(context,prm) {
context.commit("update_save_status",1)
try {
prm.token = one_token()
let resp= await api.save(prm)
if (resp.status != "OK") {
context.commit("update_save_status",3)
} else {
context.commit("update_save_status",2)
context.commit("update_last_id", prm.M_transactionID)
context.commit("update_dialog_success", true)
var msg = "Data dokter " + prm.M_transactionName + " sudah terupdate dong ..."
context.commit("update_msg_success", msg)
}
} catch(e) {
context.commit("update_save_status",3)
}
},
async saveagreement(context,prm){
context.commit("update_save_status",1)
try {
prm.token = one_token()
let resp= await api.saveagreement(prm)
if (resp.status != "OK") {
context.commit("update_save_status",3)
} else {
context.commit("update_save_status",2)
let data = {
records : resp.data.records,
total: resp.data.total
}
//context.commit("update_last_id", prm.M_transactionID)
var msg = "Data transaksi " + data.records.numbering + " sudah tersimpan dong ..."
context.commit("update_msg_success", msg)
context.commit("update_dialog_success", true)
}
} catch(e) {
context.commit("update_save_status",3)
}
},
async searchcompany(context,prm) {
context.commit("update_autocomplete_status",1)
try {
let resp= await api.searchcompany(one_token(),prm)
if (resp.status != "OK") {
context.commit("update_autocomplete_status",3)
} else {
context.commit("update_autocomplete_status",2)
let data = {
records : resp.data.records,
total: resp.data.total
}
context.commit("update_companies",resp.data.records)
}
} catch(e) {
context.commit("update_autocomplete_status",3)
}
},
async filtersearchcompany(context,prm) {
context.commit("update_autocomplete_status",1)
try {
let resp= await api.searchcompany(one_token(),prm)
if (resp.status != "OK") {
context.commit("update_autocomplete_status",3)
} else {
context.commit("update_autocomplete_status",2)
let data = {
records : resp.data.records,
total: resp.data.total
}
context.commit("update_filter_companies",resp.data.records)
}
} catch(e) {
context.commit("update_autocomplete_status",3)
}
},
async newtransaction(context,prm) {
context.commit("update_save_status",1)
try {
prm.token = one_token()
let resp= await api.newtransaction(prm)
if (resp.status != "OK") {
context.commit("update_save_status",3)
} else {
context.commit("update_save_status",2)
console.log(resp.data.id)
context.commit("update_last_id", resp.data.id)
context.commit("update_dialog_success", true)
var msg = "Data dokter " + prm.M_transactionName + " sudah tersimpan dong ..."
context.commit("update_msg_success", msg)
}
} catch(e) {
context.commit("update_save_status",3)
}
},
async delete(context,prm) {
context.commit("update_save_status",1)
try {
prm.token = one_token()
let resp= await api.xdelete(prm)
if (resp.status != "OK") {
context.commit("update_save_status",3)
} else {
context.commit("update_save_status",2)
context.commit("update_last_id", 0)
context.commit("update_dialog_confirmation_delete",false)
context.commit("update_dialog_success", true)
var msg = "Data dokter " + prm.M_transactionName + " sudah dihapus dong ..."
context.commit("update_msg_success", msg)
context.commit("update_preffix",'')
context.commit("update_transaction_name",'')
context.commit("update_suffix",'')
context.commit("update_selected_sex",{})
context.commit("update_selected_religion",{})
context.commit("update_phone",'')
context.commit("update_email",'')
context.commit("update_hp",'')
context.commit("update_pj",'N')
context.commit("update_dpj",'N')
context.commit("update_clinic",'N')
context.commit("update_marketing_confirm",'N')
context.commit("update_is_default",'N')
}
} catch(e) {
context.commit("update_save_status",3)
}
},
async getaddress(context,prm) {
context.commit("update_save_status",1)
try {
prm.token = one_token()
let resp= await api.getaddress(prm)
if (resp.status != "OK") {
context.commit("update_save_status",3)
} else {
context.commit("update_save_status",2)
let data = {
records : resp.data.records,
total: resp.data.total
}
context.commit("update_addresses",data.records)
}
} catch(e) {
context.commit("update_save_status",3)
}
},
async searchcity(context,prm) {
context.commit("update_autocomplete_status",1)
try {
let resp= await api.searchcity(one_token(),prm)
if (resp.status != "OK") {
context.commit("update_autocomplete_status",3)
} else {
context.commit("update_autocomplete_status",2)
let data = {
records : resp.data.records,
total: resp.data.total
}
context.commit("update_cities",resp.data.records)
}
} catch(e) {
context.commit("update_autocomplete_status",3)
}
},
async getdistrict(context,prm) {
context.commit("update_get_data_status",1)
try {
let resp= await api.getdistrict(one_token(),prm)
if (resp.status != "OK") {
context.commit("update_get_data_status",3)
} else {
context.commit("update_get_data_status",2)
let data = {
records : resp.data.records,
total: resp.data.total
}
context.commit("update_districts",resp.data.records)
}
} catch(e) {
context.commit("update_get_data_status",3)
}
},
async getkelurahan(context,prm) {
context.commit("update_get_data_status",1)
try {
let resp= await api.getkelurahan(one_token(),prm)
if (resp.status != "OK") {
context.commit("update_get_data_status",3)
} else {
context.commit("update_get_data_status",2)
let data = {
records : resp.data.records,
total: resp.data.total
}
context.commit("update_kelurahans",resp.data.records)
}
} catch(e) {
context.commit("update_get_data_status",3)
}
},
async savenewaddress(context,prm) {
context.commit("update_save_status",1)
try {
prm.token = one_token()
let resp= await api.savenewaddress(prm)
if (resp.status != "OK") {
context.commit("update_save_status",3)
} else {
context.commit("update_save_status",2)
context.commit("update_dialog_form_address",false)
context.commit("update_last_id", prm.M_transactionAddressM_transactionID)
context.commit("update_dialog_success", true)
var msg = "Penambahan data alamat dokter " + prm.M_transactionName + " sudah berhasil dong ..."
context.commit("update_msg_success", msg)
}
} catch(e) {
context.commit("update_save_status",3)
}
},
async saveeditaddress(context,prm) {
context.commit("update_save_status",1)
try {
prm.token = one_token()
let resp= await api.saveeditaddress(prm)
if (resp.status != "OK") {
context.commit("update_save_status",3)
} else {
context.commit("update_save_status",2)
context.commit("update_dialog_form_address",false)
context.commit("update_last_id", prm.M_transactionAddressM_transactionID)
context.commit("update_dialog_success", true)
var msg = "Perubahan data alamat dokter " + prm.M_transactionName + " sudah berhasil dong ..."
context.commit("update_msg_success", msg)
}
} catch(e) {
context.commit("update_save_status",3)
}
},
async deleteaddress(context,prm) {
context.commit("update_save_status",1)
try {
prm.token = one_token()
let resp= await api.deleteaddress(prm)
if (resp.status != "OK") {
context.commit("update_save_status",3)
} else {
context.commit("update_save_status",2)
context.commit("update_dialog_confirmation_delete_addr",false)
context.commit("update_last_id", prm.M_transactionAddressM_transactionID)
context.commit("update_dialog_success", true)
var msg = "Penghapusan data alamat "+prm.M_transactionAddressNote+" dari dokter " + prm.M_transactionName + " sudah berhasil dong ..."
context.commit("update_msg_success", msg)
}
} catch(e) {
context.commit("update_save_status",3)
}
},
async getsampletypes(context,prm) {
context.commit("update_save_status",1)
try {
prm.token = one_token()
let resp= await api.getsampletypes(prm)
if (resp.status != "OK") {
context.commit("update_save_status",3)
} else {
context.commit("update_save_status",2)
let data = {
records : resp.data.records,
total: resp.data.total
}
context.commit("update_sampletypes",data.records)
}
} catch(e) {
context.commit("update_save_status",3)
}
},
async doaction(context,prm) {
context.commit("update_save_status",1)
try {
prm.token = one_token()
let resp= await api.doaction(prm)
if (resp.status != "OK") {
context.commit("update_save_status",3)
} else {
context.commit("update_save_status",2)
context.commit("update_act",'-')
context.commit("update_dialog_action",false)
prm.lastid = -1
context.dispatch("search",prm)
}
} catch(e) {
context.commit("update_save_status",3)
}
}
}
}