/** * Created by vian on 2017/3/20. */ let model = require("./bills_lib_model"); let counter = require("../../../public/counter/counter"); let async = require("async"); let StdBillsLib = model.stdBillsLibMod; let Bills = model.billsMod; let JobContent = model.jobContentMod; let ItemCharacter = model.itemCharacterMod; let billsLibDao = function(){}; billsLibDao.prototype.getMaxNumber = function(gData, callback){ let billsLibId = gData.billsLibId; let field = gData.field; if(field === 'jobs'){ JobContent.find({billsLibId: billsLibId, deleted: false}).sort({code: -1}).limit(1).exec(function(err, result){ if(err){ callback(1, 'Error', null); } else { callback(0, '', result); } }); } else if(field === 'items'){ ItemCharacter.find({billsLibId: billsLibId, deleted: false}).sort({code: -1}).limit(1).exec(function(err, result){ if(err){ callback(1, 'Error', null); } else { callback(0, '', result); } }); } }; //----------StdBillsLib------------------- billsLibDao.prototype.getABillsLib = function(data, callback){ let billsLibId = data.billsLibId; StdBillsLib.find({billsLibId: billsLibId, deleted: false}, function(err, data){ if(err){ callback(1, 'Error', null); } else { callback(0, '', data); } }); }; /*billsLibDao.prototype.getStdBillsLib = function(data, callback){ let userId = data.userId; StdBillsLib.find({userId: userId, deleted: false}, "-_id", function(err, data){ if(err){ callback(1, "Error", null); } else{ callback(0, "", data); } }) };*/ billsLibDao.prototype.getStdBillsLib = function(data, callback){ let userId = data.userId; StdBillsLib.find({userId: userId, deleted: false}, "-_id", function(err, data){ if(err){ callback(1, "Error", null); } else{ callback(0, "", data); } }) }; billsLibDao.prototype.createStdBillsLib = function(clibData, callback){ counter.counterDAO.getIDAfterCount(counter.moduleName.billsLib, 1, function(err, result){ let billsLibId = result.value.sequence_value; let userId = clibData.userId; let billsLibName = clibData.name; let createDate = Date.now(); let newStdBillsLib = { userId: userId, billsLibId: billsLibId, billsLibName: billsLibName, createDate: createDate, deleted: false }; StdBillsLib.create(newStdBillsLib, function(err){ if(err){ callback(1, "Error", null); } else { StdBillsLib.find({billsLibId: billsLibId}, function(err, data){ if(err){ callback(1, "Error", null) } else { callback(0, "", data); } }); } }); }); }; billsLibDao.prototype.deleteStdBillsLib = function(billsLibId, callback){ StdBillsLib.update({billsLibId: billsLibId}, {$set: {deleted: true}}, function(err){ if(err){ callback(1, 'Error'); } else{ callback(0, ''); } }); }; billsLibDao.prototype.renameStdBillsLib = function(renameData, callback){ let billsLibId = renameData.id; let renameVal = renameData.value; StdBillsLib.update({billsLibId: billsLibId}, {$set:{billsLibName: renameVal}}, function(err){ if(err){ callback(1, "Error"); } else{ callback(0, ""); } }); }; billsLibDao.prototype.getStdBillsLibName = function(billsLibId, callback){ StdBillsLib.find({billsLibId: billsLibId, deleted: false}, "-_id", function(err, data){ if(err){ callback(1, "Error", null); } else { callback(0, "", data); } }); }; billsLibDao.prototype.getCurrentUniqId = function(callback){ counter.counterDAO.getCurrentID(counter.moduleName.billsLib, function(result, err){ let id = result.sequence_value; if(err){ callback(1, 'Error', null); } else{ callback(0, '', id); } }); } //----------------------------Bills--------------------- billsLibDao.prototype.getBills = function (billsLibId, callback) { Bills.find({billsLibId: billsLibId, deleted: false}, "-_id", function(err, billsData){ if(err){ callback(1, "Error", null); } else{ callback(0, "", billsData); } }); } billsLibDao.prototype.createBills = function(cbillsData, callback){ let newId = cbillsData.newId; let pid = cbillsData.ParentID; let nid = cbillsData.NextSiblingID; let billsLibId = cbillsData.billsLibId; let newBills = { ID: newId, ParentID: pid, NextSiblingID: nid, billsLibId: billsLibId, code: '', name: '', unit: '', ruleText: '', Expression: '', recharge:'', deleted: false }; Bills.create(newBills, function(err){ if(err){ callback(1, "Error"); } else{ callback(0, ""); } }); }; //org /*billsLibDao.prototype.updatePNId= function(upData, callback){ let billsLibId = upData.billsLibId; let updateDatas = upData.updateData; let success = true; if(updateDatas.length > 0){ updateDatas.forEach(function(data){ if(data.ID.length >1){ data.ID.forEach(function(id){ if(data.ParentID && data.NextSiblingID){ Bills.update({billsLibId: billsLibId, ID: id}, {$set: {ParentID: data.ParentID, NextSiblingID: data.NextSiblingID}}, function(err){ if(err){ callback(1, "Error") success = false; } }); } else if(data.ParentID && !data.NextSiblingID){ Bills.update({billsLibId: billsLibId, ID: id}, {$set: {ParentID: data.ParentID}}, function(err){ if(err){ callback(1, 'Error'); success = false; } }); } else if(!data.ParentID && data.NextSiblingID){ Bills.update({billsLibId: billsLibId, ID: id}, {$set: {NextSiblingID: data.NextSiblingID}}, function(err){ if(err){ callback(1, 'Error'); success = false; } }); } }); } else { if(data.ParentID && data.NextSiblingID){ Bills.update({billsLibId: billsLibId, ID: data.ID}, {$set: {ParentID: data.ParentID, NextSiblingID: data.NextSiblingID}}, function(err){ if(err){ callback(1, "Error") success = false; } }); } else if(data.ParentID && !data.NextSiblingID){ Bills.update({billsLibId: billsLibId, ID: data.ID}, {$set: {ParentID: data.ParentID}}, function(err){ if(err){ callback(1, 'Error'); success = false; } }); } else if(!data.ParentID && data.NextSiblingID){ Bills.update({billsLibId: billsLibId, ID: data.ID}, {$set: {NextSiblingID: data.NextSiblingID}}, function(err){ if(err){ callback(1, 'Error'); success = false; } }); } } }); } if(success){ callback(0, ''); } };*/ billsLibDao.prototype.updatePNId= function(upData, callback){ let billsLibId = upData.billsLibId; let updateDatas = upData.updateData; let eachDatas = []; if(updateDatas.length > 0){ for(let i=0; i< updateDatas.length; i++){ if(updateDatas[i].ID.length > 1){ let ids = updateDatas[i].ID; for(let j=0; j 0){ for(let i=0; i 0){ for(let i=0; i 0){ for(let i=0; i 0){ for(let i=0; i 0){ for(let i=0; i 0){ for(let i=0; i 0){ for(let i=0; i 0){ for(let i=0; i 0){ for(let i=0; i 0){ for(let i =0; i 0){ for(let i=0; i 0){ for(let i =0; i 0){ async.each(deleteCodes, function(code, cb){ ItemCharacter.update({billsLibId: billsLibId, id: updateId}, {$pull: {itemValue: {code: code}}}, function(err){ if(err){ cb(err); }else { cb(null); } }); }, function(err){ if(err){ callback(1, 'Error'); }else { callback(0, ''); } }); } } }; //org /*billsLibDao.prototype.deleteItemCharacter = function(data, callback){ let delIds = data.ids; let billsLibId = data.billsLibId; delIds.forEach(function(id){ ItemCharacter.update({billsLibId: billsLibId, id: id}, {$set: {deleted: true}}, function(err){ if(err){ callback(1, 'Error'); } }); }); }*/ billsLibDao.prototype.deleteItemCharacter = function(data, callback){ let delIds = data.ids; let billsLibId = data.billsLibId; if(delIds){ async.each(delIds, function(id, cb){ ItemCharacter.update({billsLibId: billsLibId, id: id}, {$set: {deleted: true}}, function(err){ if(err){ cb(err); }else { cb(null); } }, function(err){ if(err){ callback(1, 'Error'); }else { callback(0, ''); } }); }); } }; //org /*billsLibDao.prototype.pasteItems = function (data, callback) { let pasteDatas = data.pasteDatas; let updateDatas = pasteDatas.updateDatas, createDatas = pasteDatas.createDatas; if(updateDatas.length > 0){ for(let i=0; i 0){ for(let i =0; i 0){ for(let i=0; i 0){ for(let i =0; i 0) { for (let i = 0; i < updateDatas.length; i++) { let billsLibId = updateDatas[i].billsLibId, itemId = updateDatas[i].itemId, orgCode = updateDatas[i].orgId; console.log(`i = ${i}`); if (updateDatas[i].type === 'UpdateT') { console.log(`UpdateT`); let valueObj = {code: updateDatas[i].code, value: updateDatas[i].content}; ItemCharacter.update({billsLibId: billsLibId, id: itemId}, {$pull: {itemValue: {code: orgCode}}}, function (err) { if (err) { } else { ItemCharacter.update({billsLibId: billsLibId, id: itemId}, {$addToSet: {itemValue: valueObj}}, function (err) { if (err) { } }); } }); } else if (updateDatas[i].type === 'Update' && updateDatas[i].field === 'code') { console.log(`UpdateCode`); ItemCharacter.update({billsLibId: billsLibId, id: itemId, 'itemValue.code': orgCode}, {$set: {'itemValue.$.code': updateDatas[i].data}}, function (err) { if(err){ } }); } else { console.log(`UpdateValue`); console.log(`billsLibId: ${updateDatas[i].billsLibId} itemId: ${updateDatas[i].itemId} updateCode: ${updateDatas[i].orgId} value: ${updateDatas[i].data}`); ItemCharacter.update({billsLIbId: billsLibId, id: itemId, 'itemValue.code': orgCode}, {$set: {'itemValue.$.value': updateDatas[i].data}}, function(err, result){ if(err){ console.log(`Error`); } else { console.log(`success`); console.log(result); } }); } } } if(createDatas.length >0){ for(let i=0; i< createDatas.length; i++){ let valueObj if(createDatas[i].type === 'CreateT'){ console.log(`CreateT`); valueObj = {code: createDatas[i].code, value: createDatas[i].content}; ItemCharacter.update({billsLibId: createDatas[i].billsLibId, id: createDatas[i].itemId}, {$addToSet: {itemValue: valueObj}}, function (err) { if (err) { } }); } else if(createDatas[i].type === 'Create' && createDatas[i].field === 'code'){ console.log(`Create code`); valueObj = {code: createDatas[i].data, value: ''}; ItemCharacter.update({billsLibId: createDatas[i].billsLibId, id: createDatas[i].itemId}, {$addToSet: {itemValue: valueObj}}, function (err) { if (err) { } }); } else { console.log(`Create value`); valueObj = {code: createDatas[i].code, value: createDatas[i].data}; ItemCharacter.update({billsLibId: createDatas[i].billsLibId, id: createDatas[i].itemId}, {$addToSet: {itemValue: valueObj}}, function (err) { if (err) { } }); } } } callback(0, ''); };*/ billsLibDao.prototype.pasteValues = function(data, callback) { let pasteDatas = data.pasteDatas; let updateDatas = pasteDatas.updateDatas, createDatas = pasteDatas.createDatas; let functions = []; let parallelFucs = { updateFuc: function(data){ let billsLibId = data.billsLibId, itemId = data.itemId, orgCode = data.orgId; if (data.type === 'UpdateT') { let valueObj = {code: data.code, value: data.content}; return function (cb){ ItemCharacter.update({billsLibId: billsLibId, id: itemId}, {$pull: {itemValue: {code: orgCode}}}, function (err) { if (err) { cb(err); } else { ItemCharacter.update({billsLibId: billsLibId, id: itemId}, {$addToSet: {itemValue: valueObj}}, function (err) { if (err) { cb(err); } else { cb(null, data); } }); } }); }; } else if (data.type === 'Update' && data.field === 'code') { return function (cb) { ItemCharacter.update({billsLibId: billsLibId, id: itemId, 'itemValue.code': orgCode}, {$set: {'itemValue.$.code': data.data}}, function (err) { if(err){ cb(err); } else { cb(null, data); } }); } } else { return function (cb){ ItemCharacter.update({billsLIbId: billsLibId, id: itemId, 'itemValue.code': orgCode}, {$set: {'itemValue.$.value': data.data}}, function(err){ if(err){ cb(err); } else { cb(null, data); } }); }; } }, createFuc: function(data){ let valueObj; if(data.type === 'CreateT'){ valueObj = {code: data.code, value: data.content}; return function (cb){ ItemCharacter.update({billsLibId: data.billsLibId, id: data.itemId}, {$addToSet: {itemValue: valueObj}}, function (err) { if (err) { cb(err); } else { cb(null, data); } }); }; } else if(data.type === 'Create' && data.field === 'code'){ valueObj = {code: data.data, value: ''}; return function (cb){ ItemCharacter.update({billsLibId: data.billsLibId, id: data.itemId}, {$addToSet: {itemValue: valueObj}}, function (err) { if (err) { cb(err); } else { cb(null, data); } }); }; } else { valueObj = {code: data.code, value: data.data}; return function(cb){ ItemCharacter.update({billsLibId: data.billsLibId, id: data.itemId}, {$addToSet: {itemValue: valueObj}}, function (err) { if (err) { cb(err); } else { cb(null, data); } }); }; } } }; if (updateDatas.length > 0) { for (let i = 0; i < updateDatas.length; i++) { functions.push(parallelFucs.updateFuc(updateDatas[i])); } } if(createDatas.length >0){ for(let i=0; i< createDatas.length; i++){ functions.push(parallelFucs.createFuc(createDatas[i])); } } async.parallel(functions, function(err, datas){ if(err){ callback(1, 'Error', null); } else { callback(0, '', datas); } }); }; // module.exports = new billsLibDao();