Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function getDayOfYear(date){
- var startOfYear = new Date(date.getFullYear(), 0, 0);
- var diff = date - startOfYear;
- var oneDay = 1000 * 60 * 60 * 24;
- return Math.floor((diff / oneDay) + 1);
- }
- var counter = 0;
- var calendar = db.calendars.findOne({ "_id" : ObjectId("59638bf542ff7085349905a9") });
- var year = calendar.daysOff;
- db.claims.find(
- {
- $or: [ { "oktmo": { $exists: false } }, { "oktmo": null } ],
- "consultation": false,
- "claimCreate": {
- $gte: ISODate("2017-01-01T00:00:00.000+0000"),
- $lte: ISODate("2017-07-11T23:59:59.999+0000")
- }
- }
- ).addOption(DBQuery.Option.noTimeout).forEach(function(claim){
- var deadlineCal = 0;
- var serviceWorkDays = false;
- var startDate = claim.claimCreate;
- var day = getDayOfYear(startDate);
- var stages = claim.deadlineStages;
- if(stages != undefined){
- if(Object.keys(stages).length != 0){
- for(var i = 0; i < stages.length; i++){
- var deadline = stages[i].deadline;
- var type = stages[i].stageType;
- var workDays = stages[i].deadlineInWorkDays;
- if(type == "REGULATION_TIME" && workDays == true){
- serviceWorkDays = true;
- }
- if(deadline != 0){
- if(workDays == false){
- deadlineCal = deadlineCal + deadline;
- } else{
- while(deadline > 0){
- if(year.indexOf(day) === -1){
- deadlineCal++;
- day++;
- deadline--;
- } else{
- deadlineCal++;
- day++;
- }
- }
- }
- } else {
- print(" Claim: " + claim._id + " has ZERO deadline, skipped.");
- return;
- }
- }
- } else {
- print(" Claim: " + claim._id + " has empty deadlineStages, skipped.");
- return;
- }
- } else if (claim.deadline != undefined) {
- var deadline = claim.deadline;
- var type = "REGULATION_TIME";
- var workDays = claim.deadlineInWorkDays;
- if(type == "REGULATION_TIME" && workDays == true){
- serviceWorkDays = true;
- }
- if(deadline != 0){
- if(workDays == false){
- deadlineCal = deadline;
- } else{
- while(deadline > 0){
- if(year.indexOf(day) === -1){
- deadlineCal++;
- day++;
- deadline--;
- } else{
- deadlineCal++;
- day++;
- }
- }
- }
- } else {
- print(" Claim: " + claim._id + " has ZERO claim.deadline, skipped.");
- return;
- }
- } else {
- print(" Claim: " + claim._id + " hasn\'t deadlineStages and claim.deadline, skipped.");
- return;
- }
- if(serviceWorkDays == true){
- var ind = false;
- while(ind == false){
- if(year.indexOf(day) != -1){
- deadlineCal++;
- day++;
- ind = false;
- } else {
- ind = true;
- }
- }
- }
- claim.claimCreate.setHours(0,0,0,0);
- startDate.setTime( (+claim.claimCreate) + NumberInt(deadlineCal) * 24 * 60 * 60 * 1000 );
- var deadlineDate = startDate;
- var days = 0.0;
- if(claim.resultStatus != undefined && claim.docSendDate != undefined){
- days = (deadlineDate - claim.docSendDate) / 1000 / 60 / 60 / 24;
- daysToDeadline = days < 1 ? NumberInt(Math.ceil(days)): NumberInt(days);
- } else if(claim.resultStatus == undefined && claim.docSendDate == undefined) {
- var now = new Date();
- days = (deadlineDate - now) / 1000 / 60 / 60 / 24;
- daysToDeadline = days < 1 ? NumberInt(Math.ceil(days)): Math.floor(days);
- } else {
- print(" Claim: " + claim._id + " completed incorrectly, skipped.");
- return;
- }
- var update = db.claims.update(
- {
- "_id": claim._id
- },
- {
- $set:{
- "oktmo": "55555555",
- "deadlineDate": deadlineDate,
- "daysToDeadline": daysToDeadline
- }
- }
- );
- print("Updated " + update.nModified + " claim(s): " + claim._id + ", daysToDeadline: " + daysToDeadline);
- counter = counter + update.nModified;
- });
- print("All updated: " + counter );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement