hino / app / services / role-management.js
role-management.js
Raw
import Service from '@ember/service';

export default Service.extend({
	model : null,
	init() {
		this._super(...arguments); 
	},
	setModel(data) {
		this.set("model", data);
	},
	addRow(data, property_name) {
		let datas = new Array();
		let prevData = this.get("model." + property_name);
		if (prevData != null) {
			prevData.pushObject(data);
			datas = prevData;
		} else {
			datas.pushObject(data);
		}
		this.set("model." + property_name, datas);
	},
	deleteRow(data, property_name) {
		let prevData = this.get("model." + property_name);
		prevData.removeObject(data);
		this.set("model." + property_name, prevData);
	},
	clearDetail(property_name) {
		this.set("model." + property_name, new Array());
	},
	buildFilter() {
		let filter = '';
		let role_management_dealers = this.get('model.roleManagementDealer');
		let dealers = Array();
		role_management_dealers.forEach(element => {
			let dealer_id = element.dealer.get('id');
			if(!dealers.includes(dealer_id)) {
				dealers.push(dealer_id);
				if (filter != "") filter = filter + ",";
				filter += dealer_id;
			}
		});

		filter = "\"dealer\" : {\"in\" : \"" + filter + "\"}";

		return filter;
	},
	refreshBranches() {
		let role_management_dealers = this.get('model.roleManagementDealer');
		let role_management_dealers_branch = this.get('model.roleManagementDealerBranch');
		let dealerToBeDeleted = Array();
		let dealers = Array();

		// ambil daftar dealer yang ada di combobox DEALER
		role_management_dealers.forEach(element => {
			let dealer_id = element.dealer.get('id');
			if(!dealers.includes(dealer_id)) {
				dealers.push(dealer_id);
				dealerToBeDeleted.push(dealer_id);
			}
		});

		// ambil sermua dealerToBeDeleted, jika ditemukan skip, jika tidak maka delete
		role_management_dealers_branch.forEach(element => {
			if(element != undefined) {
				if(element.branch != undefined) {
					if(element.branch.get('dealersId') != undefined) {
						let dealer_id = element.branch.get('dealersId') + "";
						if(!dealerToBeDeleted.includes(dealer_id)) {
							role_management_dealers_branch.removeObject(element);
						}
					}
				}
			}
		});
		
		this.set("model.roleManagementDealerBranch", role_management_dealers_branch);
	}
});