Blame view
imports/collections/students/serverCsvUpload.js
8.63 KB
d0a93cc6d
|
1 2 3 |
// import { } from '/imports/collections/orgs/methods'; import _ from 'lodash'; import { Meteor } from 'meteor/meteor'; |
102b779c9
|
4 5 |
import Papa from 'meteor/harrison:papa-parse' import csv from 'csv2json-convertor' |
d0a93cc6d
|
6 7 8 9 10 11 |
import { ValidatedMethod } from 'meteor/mdg:validated-method'; import { SimpleSchema } from 'meteor/aldeed:simple-schema'; import { DDPRateLimiter } from 'meteor/ddp-rate-limiter'; import { Bert } from 'meteor/themeteorchef:bert'; import { Users } from '/imports/collections/users/index'; import { Orgs } from '/imports/collections/orgs/index'; |
102b779c9
|
12 13 14 15 |
import { Students } from '/imports/collections/students/index' import { Parents } from '/imports/collections/parents/index'; import csv1 from 'csv2json-convertor' import json2csv from 'json2csv' |
5d043355e
|
16 |
import fs from 'fs' |
102b779c9
|
17 18 19 20 21 |
import Validation from '/imports/validation/validationMethods'; import Constants from '/imports/constants/constants' export const studenCsvtMethod = new ValidatedMethod({ name: 'student.csvMethod', |
d0a93cc6d
|
22 23 24 25 26 27 28 29 30 31 |
validate: new SimpleSchema({ itemId: { type: String }, }).validator(), run({itemId}) { return {}; }, }); |
102b779c9
|
32 33 34 35 36 37 |
export const save_csv_data = new ValidatedMethod({ name: 'save_csv_data', validate: null, run({item,filename,csv_fiels}) { |
9db2d9cbe
|
38 |
|
167dd6325
|
39 40 41 |
if ((item.length)) { console.log("++++++++++++++++++"+item.length) var csv = json2csv({ |
102b779c9
|
42 43 |
data: item, fields: csv_fiels |
167dd6325
|
44 |
}); |
102b779c9
|
45 46 47 |
fs.writeFile(filename, csv,function(err) { if (err) throw err; }); |
167dd6325
|
48 49 |
} |
102b779c9
|
50 51 52 53 54 55 56 |
}, }); export const addStudentCSV= new ValidatedMethod({ name: 'student.addCSV', validate: null, |
5d043355e
|
57 |
|
102b779c9
|
58 59 60 61 |
run(item){ data = item ; console.log("data"); console.log(data); |
0c2ad31a0
|
62 |
// return true; |
102b779c9
|
63 64 65 66 |
const user = Users.findOne({_id: this.userId}); orgId = user.orgId; newStudentId = Users.insert({ // emails: [{address:data.email, verified: false}], |
0c2ad31a0
|
67 |
//username: data["First Name*"], |
5d043355e
|
68 69 |
firstName: data["First Name*"], lastName: data['Last Name*'], |
102b779c9
|
70 71 72 73 74 |
orgId: orgId, role: 'STUDENT' }); newParentUserId = Users.insert({ //emails: [{address:data.parentEmail, verified: false}], |
167dd6325
|
75 |
//3: data['Parent Name*'], |
0c2ad31a0
|
76 |
firstName: data['Parent Name*'], |
102b779c9
|
77 78 79 80 81 82 83 |
orgId: orgId, role: 'PARENT' }); if(newParentUserId){ newParentId = Parents.insert({ userId: newParentUserId, orgId: orgId, |
167dd6325
|
84 |
profession: data['Parent Profession'] |
102b779c9
|
85 86 87 88 89 90 91 92 93 94 |
}); console.log("newParentUserId"); console.log(newParentUserId); } console.log("newUserId"); console.log(newStudentId); if(newStudentId){ Students.insert({ userId: newStudentId, orgId: orgId, |
0c2ad31a0
|
95 |
admissionId: data['Student Admission ID*'], |
167dd6325
|
96 |
enrollmentDate: data['Enrollment Date(YYYY-MM-DD)*'], |
0c2ad31a0
|
97 |
gender: data['Gender(male/female)*'], |
5d043355e
|
98 |
dob: data['Birthday(YYYY-MM-DD)*'], |
167dd6325
|
99 100 101 |
bloodGroup: data['Blood Group*'], nationality: data['Nationality*'], motherTongue: data['Mother Tongue*'], |
9db2d9cbe
|
102 |
religion: data['Religion*'], |
167dd6325
|
103 |
community: data['Community'], |
0c2ad31a0
|
104 105 106 |
rollNo: data['Student Roll*'], class: data['Student Class Name*'], section: data['Student Section Name*'], |
167dd6325
|
107 108 |
prevInstitute: [{ name: data['Previous Institution Name'], |
9db2d9cbe
|
109 |
fromYear: data['Class-From'], |
167dd6325
|
110 111 |
toYear: data['Class-To'], fromClass: data['From-Year'], |
9db2d9cbe
|
112 |
toClass: data['To-Year'] |
167dd6325
|
113 114 |
}], permanentAddress: { street: data['Student Line Adress*'], |
9db2d9cbe
|
115 |
city: data['Student City*'], |
167dd6325
|
116 |
state: data['Student State*'], |
9db2d9cbe
|
117 |
zip: data['Student Zip Code*'] |
167dd6325
|
118 |
}, |
0c2ad31a0
|
119 |
parent: [{id: newParentUserId, relatinship: data['Parent Relation*']}] |
102b779c9
|
120 121 122 123 124 125 |
}); } return {newStudentId}; }, }); |
d0a93cc6d
|
126 127 |
export const studentUploadCsv = new ValidatedMethod({ name: 'student.uploadCsv', |
5d043355e
|
128 |
validate: null, |
d0a93cc6d
|
129 |
|
102b779c9
|
130 131 132 133 134 135 136 |
run({data}) { let validation = new Validation(); let constants = new Constants(); //console.log("++++++++++++++++++++++++"+constants.csv_students_data()); temp = constants.csv_students_data(); // console.log(temp); |
5d043355e
|
137 |
// var data_1=csv1.csvtojson(("/Users/satheeshnagaraj/Downloads/11.csv")); //csvtojson is function that accepts csv filenames and returns JSON object |
102b779c9
|
138 |
//console.log(data);'' |
0c2ad31a0
|
139 |
// Stores = new Mongo.Collection('stores'); |
5d043355e
|
140 |
// data = data_1; |
102b779c9
|
141 142 143 |
var CSV_valid_buffer = []; var CSV_invalid_buffer = []; |
167dd6325
|
144 |
var filename = "Student" + new Date().getTime().toString(); |
9db2d9cbe
|
145 |
var csv_filepath = '/Users/deepak/dev/yd/csv'; |
5d043355e
|
146 147 148 149 |
for (let i = 0; i < data.length; i++) { |
102b779c9
|
150 151 152 153 154 155 156 157 |
//let item= {Errors:""}; let item = data[i]; delete item['Errors']; var formate_validation = 1; var is_not_null = 1; var errors = []; for (var key in item) |
5d043355e
|
158 |
{ |
102b779c9
|
159 160 161 |
var value = item[key]; var n = key.indexOf("*"); if(n!=-1) { |
5d043355e
|
162 |
if(!(validation.notNull(value))) |
102b779c9
|
163 164 165 |
{ errors.push(key+"is Empty"); } |
5d043355e
|
166 |
is_not_null = is_not_null && validation.notNull(value); |
102b779c9
|
167 168 169 170 171 172 173 174 175 176 177 |
} } //console.log(validation.mobileNumber(item["Parent Mobile*"])); var formate_validation = validation.validateEmail(item["Parent Email*"]) && validation.mobileNumber(item["Parent Mobile*"]) ; //&& validation.validateEmail(item["Parent Mobile"]) ); if (!(validation.validateEmail(item["Parent Email*"]))) { |
5d043355e
|
178 |
errors.push('Parent Email is invalid'); |
102b779c9
|
179 180 181 |
} if (!(validation.mobileNumber(item["Parent Mobile*"]))) { |
5d043355e
|
182 |
errors.push('Parent Mobile is invalid'); |
102b779c9
|
183 184 185 |
} var is_valid = formate_validation && is_not_null ; |
5d043355e
|
186 |
|
102b779c9
|
187 188 |
// console.log(formate_validation); if (is_valid) |
5d043355e
|
189 |
{ |
102b779c9
|
190 191 |
CSV_valid_buffer.push(item); console.log("----------------------------------------1"); |
9db2d9cbe
|
192 193 194 |
console.log("----------------------------------------item"); console.log(item); console.log (Users.findOne({"firstName": item["First Name*"],"lastName": item["Last Name*"]})); |
102b779c9
|
195 196 |
Meteor.call('student.addCSV',item); console.log("----------------------------------------2"); |
5d043355e
|
197 |
|
102b779c9
|
198 |
// exists = Stores.findOne({ |
5d043355e
|
199 |
// "Student 'Admission' ID*": item["Student Admission ID*"] |
102b779c9
|
200 |
// }); |
5d043355e
|
201 |
// if (!exists) |
102b779c9
|
202 203 204 |
// { // Stores.insert(item); // } |
5d043355e
|
205 |
// else |
102b779c9
|
206 207 208 |
// { // console.warn('Rejected. This item already exists.'); // } |
5d043355e
|
209 210 |
} else |
102b779c9
|
211 212 213 214 215 216 217 218 |
{ var str = errors.toString(); item.Errors = str; CSV_invalid_buffer.push(item); //console.log(str); // console.log(CSV_invalid_buffer); } } |
102b779c9
|
219 220 |
Meteor.call('save_csv_data',{ item : CSV_invalid_buffer, filename: csv_filepath+filename+"_CSV_invalid_data"+".csv",csv_fiels :constants.csv_students_data()}); Meteor.call('save_csv_data',{ item : CSV_valid_buffer,filename: csv_filepath+filename+"_CSV_valid_data"+".csv",csv_fiels :constants.csv_students_data()}); |
d0a93cc6d
|
221 222 223 224 |
return {}; }, }); |