/**
* @ngdoc controllers
* @name BySat
* @module s4c.components.admin.controllers.BySat
*
* @description
* `BySat` Controller da tela de BySat do módulo de administração
*
*
*/
(function () {
'use strict';
angular.module('s4c.controllers.BySatCtrl', [])
.controller('BySatCtrl', BySatCtrl);
BySatCtrl.$inject = [
'$scope',
'$http',
'$mdDialog',
'API_ENDPOINT',
'Integracao'
]
function BySatCtrl($scope, $http, $mdDialog, API_ENDPOINT, Integracao) {
angular.extend($scope, {
'prefixoTipoForca': {
arquivo: '',
versao: 1,
dados: []
},
'ordemPlacaGrupamentoModelo': {
arquivo: '',
versao: 1,
dados: []
},
erros: {},
avancado: {},
enviar: enviar,
mensagensDeErro: mensagensDeErro,
atualizarURL: atualizarURL
});
Integracao.obter('BySat').then(function (bysat) {
$scope.avancado = bysat.detalhes;
});
/**
* @method mensagensDeErro
*/
function mensagensDeErro() {
return _.values($scope.erros);
}
/**
* @method enviar
*/
function enviar() {
$http.post($scope.avancado.url, {
prefixoTipoForca: $scope.prefixoTipoForca,
ordemPlacaGrupamentoModelo: $scope.ordemPlacaGrupamentoModelo
}).then(function () {
$mdDialog.show(
$mdDialog.alert()
.title('Sucesso')
.content('O upload dos arquivos foi feito com sucesso.')
.ariaLabel('O upload dos arquivos foi feito com sucesso.')
.ok('OK')
);
}, function () {
$mdDialog.show(
$mdDialog.alert()
.title('Erro')
.content('Ocorreu um erro ao tentar fazer o upload do arquivos, tenve novamente mais tarde.')
.ariaLabel('Ocorreu um erro ao tentar fazer o upload do arquivos, tenve novamente mais tarde.')
.ok('OK')
);
});
}
/**
* @method atualizarURL
*/
function atualizarURL() {
Integracao.atualizar('BySat', $scope.avancado);
}
$('#botao-arquivo-1').on('click', function (e) {
var input = $('#arquivo-1');
e.stopPropagation();
input.val(null);
input.click();
});
$('#botao-arquivo-2').on('click', function (e) {
var input = $('#arquivo-2');
e.stopPropagation();
input.val(null);
input.click();
})
$('#arquivo-1').on('change', function (ctx) {
ctx = ctx.target;
$('#nomeArquivo-1').text(ctx.files[0].name);
var files = ctx.files;
var i, f;
for (i = 0, f = files[i]; i != files.length; ++i) {
var reader = new FileReader();
var name = f.name;
reader.onload = function (e) {
var data = e.target.result;
var workbook = XLSX.read(data, { type: 'binary' });
workbook.Custprops.name = name;
$scope.erros = {};
_.chain(workbook.Sheets)
.values()
.each(function (sheet) {
var dados = XLS.utils.sheet_to_json(sheet);
_.each(dados, function (dado) {
_.chain(dado)
.keys()
.each(function (key) {
dado[_.camelCase(key)] = dado[key];
delete dado[key];
})
.value();
if (!_.trim(dado.prefixo)) {
$scope.erros['prefixoVazio'] = 'Campo "prefixo" é obrigatório';
}
if (!_.trim(dado.tipo)) {
$scope.erros['prefixoVazio'] = 'Campo "tipo" é obrigatório';
}
if (!_.trim(dado.forca)) {
$scope.erros['prefixoVazio'] = 'Campo "forca" é obrigatório';
}
});
$scope.prefixoTipoForca.dados = $scope.prefixoTipoForca.dados.concat(dados);
})
.value();
$scope.prefixoTipoForca.arquivo = workbook.Custprops.name;
if (_.values($scope.erros).length === 0) {
$scope.sucessoArquivo1 = true;
} else {
$scope.sucessoArquivo1 = false;
}
$scope.$apply();
};
reader.readAsBinaryString(f);
}
});
$('#arquivo-2').on('change', function (ctx) {
ctx = ctx.target;
console.log(ctx);
$('#nomeArquivo-2').text(ctx.files[0].name);
var files = ctx.files;
var i, f;
for (i = 0, f = files[i]; i != files.length; ++i) {
var reader = new FileReader();
var name = f.name;
reader.onload = function (e) {
var data = e.target.result;
var workbook = XLSX.read(data, { type: 'binary' });
workbook.Custprops.name = name;
$scope.erros = {};
_.chain(workbook.Sheets)
.values()
.each(function (sheet) {
var dados = XLS.utils.sheet_to_json(sheet);
_.each(dados, function (dado) {
_.chain(dado)
.keys()
.each(function (key) {
dado[_.camelCase(key)] = dado[key];
delete dado[key];
})
.value();
if (!_.trim(dado.grupamento)) {
dado.grupamento = 'Não alocado';
}
if (!_.trim(dado.numeroDeOrdem)) {
$scope.erros['numeroDeOrdemVazio'] = 'Número de ordem é obrigatório';
} else if (dado.numeroDeOrdem.split('-').length != 2) {
$scope.erros['numeroDeOrdemSemPrefixo'] = 'Campo "numeroDeOrdem" deve ter prefixo';
}
if (!dado.placa) {
// Adicionando placa se não existir
dado.placa = '-';
//$scope.erros['placaVazio'] = 'Campo "placa" é obrigatório';
}
dado.numeroOrdem = dado.numeroDeOrdem;
delete dado.numeroDeOrdem;
});
$scope.ordemPlacaGrupamentoModelo.dados = $scope.ordemPlacaGrupamentoModelo.dados.concat(dados);
})
.value();
$scope.ordemPlacaGrupamentoModelo.arquivo = workbook.Custprops.name;
if (_.values($scope.erros).length === 0) {
$scope.sucessoArquivo2 = true;
} else {
$scope.sucessoArquivo2 = false;
}
$scope.$apply();
};
reader.readAsBinaryString(f);
}
})
}
}());