storoge

Untitled

Jul 5th, 2017
102
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function getDayOfYear(date){
  2.     var startOfYear = new Date(date.getFullYear(), 0, 0);
  3.     var diff = date - startOfYear;
  4.     var oneDay = 1000 * 60 * 60 * 24;
  5.  
  6.     return Math.floor((diff / oneDay) + 1);
  7. }
  8.  
  9. var arr = {
  10. "46641000":"582c0ea6a78ee5349f914fa9"
  11. };
  12.  
  13. for (var key in arr) {
  14.     if (arr.hasOwnProperty(key)) {
  15.  
  16. var calendar = db.calendars.findOne({ "_id" : ObjectId(arr[key]) });
  17. var year = calendar.daysOff;
  18.  
  19.  
  20. db.claims.find(
  21. {
  22.     "oktmo": key,
  23.     "consultation": false,
  24.     "claimCreate": {
  25.         $gte: ISODate("2017-05-01T00:00:00.000+0000"),
  26.         $lte: ISODate("2017-05-31T23:59:59.999+0000")
  27.     }
  28.     ,
  29.     "deadlineStages": {
  30.         $exists: true
  31.     }
  32. }
  33.  
  34. ).limit(20).forEach(function(claim){
  35.     var deadlineCal = 0;
  36.    
  37.     var startDate = claim.claimCreate;
  38.     var day = getDayOfYear(startDate);
  39.    
  40.     var stages = claim.deadlineStages;
  41.     if(stages != undefined){
  42.         if(Object.keys(stages).length != 0){
  43.             var serviceWorkDays = false;
  44.            
  45.             for(var i = 0; i < stages.length; i++){
  46.                 var deadline = stages[i].deadline;
  47.                 var type = stages[i].stageType;
  48.                 var workDays = stages[i].deadlineInWorkDays;
  49.                
  50.                 if(type == "REGULATION_TIME" && workDays == true){
  51.                     serviceWorkDays = true;
  52.                 }
  53.            
  54.                 if(deadline != 0){
  55.                     if(workDays == false){
  56.                         deadlineCal = deadlineCal + deadline;
  57.                     } else{
  58.                         while(deadline > 0){
  59.                             if(year.indexOf(day) === -1){
  60.                                 deadlineCal++;
  61.                                 day++;     
  62.                                 deadline--;
  63.                             } else{
  64.                                 deadlineCal++;
  65.                                 day++;
  66.                             }
  67.                         }
  68.                     }
  69.                 } else {
  70.                     print(" Claim: " + claim._id + " has ZERO deadline, skipped.");
  71.                     return;
  72.                 }
  73.             }
  74.        
  75.             if(serviceWorkDays == true){
  76.                 var ind = false;
  77.                
  78.                 while(ind == false){
  79.                     if(year.indexOf(day) != -1){
  80.                         deadlineCal++;
  81.                         day++;
  82.                        
  83.                         ind = false;
  84.                     } else {
  85.                         ind = true;
  86.                     }
  87.                 }
  88.             }
  89.            
  90.         } else {
  91.             print(" Claim: " + claim._id + " has empty deadlineStages, skipped.");
  92.             return;
  93.         }
  94.     } else{
  95.         print(" Claim: " + claim._id + " hasn\'t deadlineStages, skipped.");
  96.         return;
  97.     }
  98.    
  99.     claim.claimCreate.setHours(24,0,0,0);
  100.     startDate.setTime( (+claim.claimCreate) + NumberInt(deadlineCal) * 24 * 60 *  60 * 1000 );
  101.    
  102.     //startDate = claim.claimCreate;
  103.     //startDate.setDate(claim.claimCreate.getDate() + deadlineCal);
  104.     //startDate.setHours(24,0,0,0);
  105.     //startDate.setDate(startDate.getDate() - 1);
  106.     //setDaysToDeadline(days < 1 ? (int) Math.ceil(days) : (int) days); - это у них
  107.    
  108.     var deadlineDate = startDate;
  109.     var days = 0.0;
  110.    
  111.     if(claim.resultStatus != undefined && claim.docSendDate != undefined){
  112.         days = (deadlineDate - claim.docSendDate) / 1000 / 60 / 60 / 24;
  113.         daysToDeadline = days < 1 ? NumberInt(Math.ceil(days)): NumberInt(days);
  114.         //daysToDeadline = NumberInt(Math.ceil((deadlineDate - claim.docSendDate) / 1000 / 60 / 60 / 24));
  115.    
  116.     } else if(claim.resultStatus == undefined && claim.docSendDate == undefined) {
  117.         var now = new Date();
  118.         days = (deadlineDate - now) / 1000 / 60 / 60 / 24;
  119.         daysToDeadline = days < 1 ? NumberInt(Math.ceil(days)): NumberInt(days);
  120.         //daysToDeadline = NumberInt(Math.ceil((deadlineDate - now) / 1000 / 60 / 60 / 24));
  121.    
  122.     } else {
  123.         print(" Claim: " + claim._id + " completed incorrectly, skipped.");
  124.         return;
  125.     }
  126.    
  127.     //print("Updated claim(s): " + claim.customClaimNumber );
  128.    
  129.  var update = db.claims.update(
  130.         {
  131.             "_id": claim._id
  132.         },
  133.         {
  134.             $set:{
  135.                 "deadlineDate": deadlineDate,
  136.                 "daysToDeadline": daysToDeadline
  137.             }
  138.         }
  139.     );
  140.     print("Updated  " + update.nModified + " claim(s): " + claim.customClaimNumber + ", daysToDeadline: " + daysToDeadline);
  141. });
  142.  
  143.     }
  144. }
RAW Paste Data