????

Your IP : 18.118.253.134


Current Path : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/controllers/dichvu/
Upload File :
Current File : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/controllers/dichvu/docgia.js

var Database = require('../../models/Database');
var moment = require('moment');
var bcrypt = require('bcryptjs');
class ReaderController extends Database {
  constructor(params) {
    super(params);
  }
  static create(params) {
    return new ReaderController(params);
  }
  getReaders() {
    return this.select('SELECT ROW_NUMBER() OVER(ORDER BY Username) as RowNum,UUID,Username,Password,FullName,Gender,IdNumber,Birthday,Email,Telephone,Address, (SELECT COUNT(UUID) FROM DocReq WHERE CreatedBy = Account.UUID) reqCount FROM Account WHERE [Role] = 2 AND [State] > 0');
  }
  async addReader(reader) {
    let input = {
      username: reader['username'],
      password: await bcrypt.hash(reader['newpassword'], 10),
      fullname: reader['fullname'],
      gender: reader['gender'],
      idnumber: reader['idnumber'],
      birthday: moment(reader['birthday'], 'DD/MM/YYYY').isValid() ? moment(reader['birthday'], 'DD/MM/YYYY').toDate() : null,
      email: reader['email'] || null,
      phone: reader['phone'] || null,
      address: reader['address'] || null,
      role: 2
    };
    return await this.query('INSERT INTO Account(Username,Password,FullName,Gender,IdNumber,Birthday,Email,Telephone,Address,Role,[State]) VALUES (@username,@password,@fullname,@gender,@idnumber,@birthday,@email,@phone,@address,@role,1)', input);
  }
  async editReader(reader) {
    let input = {
      id: reader['id'],
      username: reader['username'],
      fullname: reader['fullname'],
      password: reader['newpassword'] ? await bcrypt.hash(reader['newpassword'], 10) : null,
      gender: reader['gender'],
      idnumber: reader['idnumber'],
      birthday: moment(reader['birthday'], 'DD/MM/YYYY').isValid() ? moment(reader['birthday'], 'DD/MM/YYYY').toDate() : null,
      email: reader['email'] || null,
      phone: reader['phone'] || null,
      address: reader['address'] || null,
    };
    let update = [];
    if (typeof reader['username'] != 'undefined') update.push('Username = @username');
    if (typeof reader['fullname'] != 'undefined') update.push('FullName = @fullname');
    if (reader['password']) update.push('Password = @password');
    if (typeof reader['gender'] != 'undefined') update.push('Gender = @gender');
    if (typeof reader['idnumber'] != 'undefined') update.push('IdNumber = @idnumber');
    if (typeof reader['birthday'] != 'undefined') update.push('Birthday = @birthday');
    if (typeof reader['email'] != 'undefined') update.push('Email = @email');
    if (typeof reader['phone'] != 'undefined') update.push('Telephone = @phone');
    if (typeof reader['address'] != 'undefined') update.push('Address = @address');
    if (update.length) return await this.query(`UPDATE Account SET ${update.join(',')} WHERE UUID = @id`, input);
    return null;
  }
  deleteReader(readerId) {
    return this.query('UPDATE Account SET [State] = 0 WHERE UUID = @id AND [Role] = 2', { id: readerId })
  }
}

module.exports = ReaderController;