script_v2.js 5.24 KB
conn = new Mongo('mongodb://sandmongots:Aistsmongo@10.232.155.131:25000/admin');
// conn_iot_partner_company = new Mongo('mongodb://serveradm:mypassword@10.138.42.23:8080/iot_partner_company');
// conn_iot_partner_workflow = new Mongo('mongodb://serveradm:mypassword@10.138.42.23:8080/iot_partner_workflow');

company = conn.getDB("iot_partner_company");
workflow = conn.getDB("iot_partner_workflow");

companies = company.companies.find()

// let movedFileList = []
issueCompanies = []

while ( companies.hasNext() ) {
   companie = companies.next()
   
   // print(companie.files)
   let hasVatFile, hasCompanyPresentation, hasCompanyFile
   for (let file of companie.files ) {
      // vatFile, companyPresentaion, companyFile
      // print(file)
      if(file.fileValue === 'vatFile') {
         hasVatFile = true
      } else if(file.fileValue === 'CompanyProfilePresentation0') {
         hasCompanyPresentation = true
      } else if(file.fileValue === 'companyFile') {
         hasCompanyFile = true
      }
   }

   if(!hasVatFile || !hasCompanyPresentation || !hasCompanyFile) {
      issueCompanies.push(companie)
   }
}

// searchWorksheetList = []

for(let issueComp of issueCompanies) {
   for(let file of issueComp.files) {
      let searchWorksheet = {
         'files.fileId' : file.fileId,
         'supplierRegistration.taxId': issueComp.taxId
      }

      worksheets = workflow.worksheets.find(searchWorksheet).sort( { "updatedDate": -1 } )
      // print(worksheets.size() > 0)
      if(worksheets.size() > 0) {
         // print(worksheets)
         let worksheet = worksheets[0]
         
         let expectWorksheet = []
         let alreadyVatFile, alreadyCompanyProfilePresentation, alreadycompanyFile
         let vFile, presentFile, compFile
         for(let worksheetFile of worksheet.files) {
            if(worksheetFile.fileValue === 'vatFile') {
               if(!vFile) {
                  vFile = worksheetFile
               }
               if(worksheetFile.isPass === true) {
                  if(!alreadyVatFile) {
                     expectWorksheet.push(worksheetFile)
                  }
                  alreadyVatFile = true
               }
            } else if(worksheetFile.fileValue === 'CompanyProfilePresentation0') {
               if(!presentFile) {
                  presentFile = worksheetFile
               }
               if(worksheetFile.isPass === true) {
                  if(!alreadyCompanyProfilePresentation) {
                     expectWorksheet.push(worksheetFile)
                  }
                  alreadyCompanyProfilePresentation = true
               }
            } else if(worksheetFile.fileValue === 'companyFile') {
               if(!compFile) {
                  compFile = worksheetFile
               }
               if(worksheetFile.isPass === true) {
                  if(!alreadycompanyFile) {
                     expectWorksheet.push(worksheetFile)
                  }
                  alreadycompanyFile = true
               }
            }
         }

         if(!alreadyVatFile) {
            if(vFile) {
               expectWorksheet.push(vFile)
            }
         }

         if(!alreadyCompanyProfilePresentation) {
            if(presentFile) {
               expectWorksheet.push(presentFile)
            }
         }

         if(!alreadycompanyFile) {
            if(compFile) {
               expectWorksheet.push(compFile)
            }
         }
         
         newFileList = issueComp.files
         fileNameForMoved = []

         for(let ws of expectWorksheet) {
            hasFile = false
            for(let file2 of issueComp.files) {
               if(ws.fileId === file2.fileId) {
                  hasFile = true
                  break
               }
            }

            if(!hasFile) {
               fileNameForMoved.push(ws.fileName)
               newFileList.push(ws)
            }

            hasCompany = false
            for(let wsComp of worksheet.businessAgreement.companyFiles.companies) {
               if(wsComp === ws.fileId) {
                  hasCompany = true
                  break
               }
               // 
            }

            if(!hasCompany) {
               worksheet.businessAgreement.companyFiles.companies.push(ws.fileId)
            }
         }
         
         // 
         // update company and worksheet //
         print("update company where _id " + issueComp._id)
         printjson({$set: { files: newFileList }})

         company.companies.update({_id: issueComp._id}, {
            '$set': { files: newFileList }
         })

         print("update worksheet where _id " + worksheet._id)
         printjson({$set: { 'businessAgreement.companyFiles.companies': worksheet.businessAgreement.companyFiles.companies }})

         workflow.worksheets.update({_id: worksheet._id}, {
            '$set': {'businessAgreement.companyFiles.companies' : worksheet.businessAgreement.companyFiles.companies}
         })

         printjson(fileNameForMoved)

         for(let fileName of fileNameForMoved) {
            company.movedFiles.insert({
               src: `/workflows/worksheets/${worksheet._id}/files/${fileName}`,
               dest: `/companies/${worksheet.supplierRegistration.taxId}/${fileName}`
            })
         }
         
         break;
      }
   }
}