storoge

Untitled

Jul 11th, 2017
77
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 counter = 0;
  10.  
  11.  
  12. var calendar = db.calendars.findOne({ "_id" : ObjectId("59638bf542ff7085349905a9") });
  13. var year = calendar.daysOff;
  14.  
  15.  
  16. db.claims.find(
  17. {
  18.      $or: [ { "oktmo": { $exists: false } }, { "oktmo": null } ],
  19.     "consultation": false,
  20.     "claimCreate": {
  21.         $gte: ISODate("2017-01-01T00:00:00.000+0000"),
  22.         $lte: ISODate("2017-07-11T23:59:59.999+0000")
  23.     }
  24. }
  25.  
  26. ).addOption(DBQuery.Option.noTimeout).forEach(function(claim){
  27.     var deadlineCal = 0;
  28.     var serviceWorkDays = false;
  29.     var startDate = claim.claimCreate;
  30.     var day = getDayOfYear(startDate);
  31.    
  32.     var stages = claim.deadlineStages;
  33.     if(stages != undefined){
  34.         if(Object.keys(stages).length != 0){
  35.            
  36.            
  37.             for(var i = 0; i < stages.length; i++){
  38.                 var deadline = stages[i].deadline;
  39.                 var type = stages[i].stageType;
  40.                 var workDays = stages[i].deadlineInWorkDays;
  41.                
  42.                 if(type == "REGULATION_TIME" && workDays == true){
  43.                     serviceWorkDays = true;
  44.                 }
  45.            
  46.                 if(deadline != 0){
  47.                     if(workDays == false){
  48.                         deadlineCal = deadlineCal + deadline;
  49.                     } else{
  50.                         while(deadline > 0){
  51.                             if(year.indexOf(day) === -1){
  52.                                 deadlineCal++;
  53.                                 day++;     
  54.                                 deadline--;
  55.                             } else{
  56.                                 deadlineCal++;
  57.                                 day++;
  58.                             }
  59.                         }
  60.                     }
  61.                 } else {
  62.                     print(" Claim: " + claim._id + " has ZERO deadline, skipped.");
  63.                     return;
  64.                 }
  65.             }
  66.        
  67.  
  68.            
  69.         } else  {
  70.             print(" Claim: " + claim._id + " has empty deadlineStages, skipped.");
  71.             return;
  72.         }
  73.     } else if (claim.deadline != undefined) {
  74.             var deadline = claim.deadline;
  75.             var type = "REGULATION_TIME";
  76.             var workDays = claim.deadlineInWorkDays;
  77.                 if(type == "REGULATION_TIME" && workDays == true){
  78.                     serviceWorkDays = true;
  79.                 }
  80.                     if(deadline != 0){
  81.                     if(workDays == false){
  82.                         deadlineCal = deadline;
  83.                     } else{
  84.                         while(deadline > 0){
  85.                             if(year.indexOf(day) === -1){
  86.                                 deadlineCal++;
  87.                                 day++;     
  88.                                 deadline--;
  89.                             } else{
  90.                                 deadlineCal++;
  91.                                 day++;
  92.                             }
  93.                         }
  94.                     }
  95.                 } else {
  96.                     print(" Claim: " + claim._id + " has ZERO claim.deadline, skipped.");
  97.                     return;
  98.                 }
  99.    
  100.     } else {
  101.         print(" Claim: " + claim._id + " hasn\'t deadlineStages and claim.deadline, skipped.");
  102.         return;
  103.     }
  104.    
  105.                 if(serviceWorkDays == true){
  106.                 var ind = false;
  107.                
  108.                 while(ind == false){
  109.                     if(year.indexOf(day) != -1){
  110.                         deadlineCal++;
  111.                         day++;
  112.                        
  113.                         ind = false;
  114.                     } else {
  115.                         ind = true;
  116.                     }
  117.                 }
  118.             }
  119.    
  120.    
  121.     claim.claimCreate.setHours(0,0,0,0);
  122.     startDate.setTime( (+claim.claimCreate) + NumberInt(deadlineCal) * 24 * 60 *  60 * 1000 );
  123.  
  124.    
  125.     var deadlineDate = startDate;
  126.     var days = 0.0;
  127.  
  128.     if(claim.resultStatus != undefined && claim.docSendDate != undefined){
  129.         days = (deadlineDate - claim.docSendDate) / 1000 / 60 / 60 / 24;
  130.         daysToDeadline = days < 1 ? NumberInt(Math.ceil(days)): NumberInt(days);
  131.    
  132.     } else if(claim.resultStatus == undefined && claim.docSendDate == undefined) {
  133.         var now = new Date();
  134.         days = (deadlineDate - now) / 1000 / 60 / 60 / 24;
  135.         daysToDeadline = days < 1 ? NumberInt(Math.ceil(days)): Math.floor(days);
  136.     } else {
  137.         print(" Claim: " + claim._id + " completed incorrectly, skipped.");
  138.         return;
  139.     }
  140.    
  141.     var update = db.claims.update(
  142.         {
  143.             "_id": claim._id
  144.         },
  145.         {
  146.             $set:{
  147.                 "oktmo": "55555555",
  148.                 "deadlineDate": deadlineDate,
  149.                 "daysToDeadline": daysToDeadline
  150.             }
  151.         }
  152.     );
  153.     print("Updated  " + update.nModified + " claim(s): " + claim._id + ", daysToDeadline: " + daysToDeadline);
  154.     counter = counter + update.nModified;
  155. });
  156.  
  157. print("All updated: " + counter );
RAW Paste Data