// import { } from '/imports/collections/orgs/methods'; import _ from 'lodash'; import { Meteor } from 'meteor/meteor'; import Papa from 'meteor/harrison:papa-parse' import csv from 'csv2json-convertor' 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'; import { Students } from '/imports/collections/students/index' import { Parents } from '/imports/collections/parents/index'; import csv1 from 'csv2json-convertor' import json2csv from 'json2csv' import fs from 'fs' import Validation from '/imports/validation/validationMethods'; import Constants from '/imports/constants/constants' export const studenCsvtMethod = new ValidatedMethod({ name: 'student.csvMethod', validate: new SimpleSchema({ itemId: { type: String }, }).validator(), run({itemId}) { return {}; }, }); export const save_csv_data = new ValidatedMethod({ name: 'save_csv_data', validate: null, run({item,filename,csv_fiels}) { if ((item.length)) { console.log("++++++++++++++++++"+item.length) var csv = json2csv({ data: item, fields: csv_fiels }); fs.writeFile(filename, csv,function(err) { if (err) throw err; }); } }, }); export const addStudentCSV= new ValidatedMethod({ name: 'student.addCSV', validate: null, run(item){ data = item ; console.log("data"); console.log(data); // return true; const user = Users.findOne({_id: this.userId}); orgId = user.orgId; newStudentId = Users.insert({ // emails: [{address:data.email, verified: false}], //username: data["First Name*"], firstName: data["First Name*"], lastName: data['Last Name*'], orgId: orgId, role: 'STUDENT' }); newParentUserId = Users.insert({ //emails: [{address:data.parentEmail, verified: false}], //3: data['Parent Name*'], firstName: data['Parent Name*'], orgId: orgId, role: 'PARENT' }); if(newParentUserId){ newParentId = Parents.insert({ userId: newParentUserId, orgId: orgId, profession: data['Parent Profession'] }); console.log("newParentUserId"); console.log(newParentUserId); } console.log("newUserId"); console.log(newStudentId); if(newStudentId){ Students.insert({ userId: newStudentId, orgId: orgId, admissionId: data['Student Admission ID*'], enrollmentDate: data['Enrollment Date(YYYY-MM-DD)*'], gender: data['Gender(male/female)*'], dob: data['Birthday(YYYY-MM-DD)*'], bloodGroup: data['Blood Group*'], nationality: data['Nationality*'], motherTongue: data['Mother Tongue*'], religion: data['Religion*'], community: data['Community'], rollNo: data['Student Roll*'], class: data['Student Class Name*'], section: data['Student Section Name*'], prevInstitute: [{ name: data['Previous Institution Name'], fromYear: data['Class-From'], toYear: data['Class-To'], fromClass: data['From-Year'], toClass: data['To-Year'] }], permanentAddress: { street: data['Student Line Adress*'], city: data['Student City*'], state: data['Student State*'], zip: data['Student Zip Code*'] }, parent: [{id: newParentUserId, relatinship: data['Parent Relation*']}] }); } return {newStudentId}; }, }); export const studentUploadCsv = new ValidatedMethod({ name: 'student.uploadCsv', validate: null, run({data}) { let validation = new Validation(); let constants = new Constants(); //console.log("++++++++++++++++++++++++"+constants.csv_students_data()); temp = constants.csv_students_data(); // console.log(temp); // var data_1=csv1.csvtojson(("/Users/satheeshnagaraj/Downloads/11.csv")); //csvtojson is function that accepts csv filenames and returns JSON object //console.log(data);'' // Stores = new Mongo.Collection('stores'); // data = data_1; var CSV_valid_buffer = []; var CSV_invalid_buffer = []; var filename = "Student" + new Date().getTime().toString(); var csv_filepath = '/Users/deepak/dev/yd/csv'; for (let i = 0; i < data.length; i++) { //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) { var value = item[key]; var n = key.indexOf("*"); if(n!=-1) { if(!(validation.notNull(value))) { errors.push(key+"is Empty"); } is_not_null = is_not_null && validation.notNull(value); } } //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*"]))) { errors.push('Parent Email is invalid'); } if (!(validation.mobileNumber(item["Parent Mobile*"]))) { errors.push('Parent Mobile is invalid'); } var is_valid = formate_validation && is_not_null ; // console.log(formate_validation); if (is_valid) { CSV_valid_buffer.push(item); console.log("----------------------------------------1"); console.log("----------------------------------------item"); console.log(item); console.log (Users.findOne({"firstName": item["First Name*"],"lastName": item["Last Name*"]})); Meteor.call('student.addCSV',item); console.log("----------------------------------------2"); // exists = Stores.findOne({ // "Student 'Admission' ID*": item["Student Admission ID*"] // }); // if (!exists) // { // Stores.insert(item); // } // else // { // console.warn('Rejected. This item already exists.'); // } } else { var str = errors.toString(); item.Errors = str; CSV_invalid_buffer.push(item); //console.log(str); // console.log(CSV_invalid_buffer); } } 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()}); return {}; }, });