Sync from remote server: 2025-10-12 18:56:41
This commit is contained in:
322
Tilt/Users_Def_old.m
Executable file
322
Tilt/Users_Def_old.m
Executable file
@@ -0,0 +1,322 @@
|
||||
function [Mail,Users_Alert,Users_SMS,Users_Report,activeIT,activeEN,...
|
||||
sms,siteID,NomeSito,ini_CoV] = Users_Def(IDcentralina,conn,FileName)
|
||||
|
||||
text = 'Users function started';
|
||||
fileID = fopen(FileName,'a');
|
||||
fmt = '%s \r';
|
||||
fprintf(fileID,fmt,text);
|
||||
|
||||
% A partire dalla centralina, risalgo al site ID
|
||||
comando = ['select site_id from units where name like ''' IDcentralina ''' '];
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
siteID = num2str(cell2mat(curs.Data));
|
||||
|
||||
% --- Cerco gli utenti ---
|
||||
|
||||
% - Definisco gli Users
|
||||
% A partire dal site ID, risalgo al company ID
|
||||
comando = ['select company_id, name, lat, lon, alarm_email from sites where id like ''' siteID ''' '];
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
Site = curs.Data;
|
||||
Company_id = num2str(cell2mat(Site(1,1)));
|
||||
Email_Alarm_Site = Site(1,5);
|
||||
NomeSito = Site(1,2);
|
||||
|
||||
% A partire dal company ID, mi scarico le info relative a Send Email Alarm
|
||||
comando = ['select send_alarm from companies where id like ''' Company_id ''' '];
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
Mail = cell2mat(curs.Data);
|
||||
|
||||
if Mail == 1 % Significa che invio Mail alla Company del Sito
|
||||
% La Mail la mando SOLO alla mail indicata nel campo del Sito (per quanto riguarda la company cliente)
|
||||
if isempty(cell2mat(Email_Alarm_Site)) == 0
|
||||
if strcmp(char(Email_Alarm_Site),'null') == 0
|
||||
US = Email_Alarm_Site;
|
||||
check = cell2mat(strfind(US,','));
|
||||
if isempty(check)==1
|
||||
% A partire dal company ID, risalgo agli utenti e alla loro mail di
|
||||
% quella company che sono admin
|
||||
comando = ['select fname, lname, language_id, info, phone, sms_alarm, report, report_cov, '...
|
||||
'allertamento from users where email like '''...
|
||||
char(US) ''' '];
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
Info = curs.Data; % Cerco la lingua dell'unico destinatario
|
||||
[~,cC] = size(Info);
|
||||
if cC > 1
|
||||
Users = Info(1:2);
|
||||
Users(3) = US;
|
||||
Users(4:5) = Info(3:4);
|
||||
Users(6) = Info(5);
|
||||
Users(7:10) = Info(6:9);
|
||||
else
|
||||
Users = [];
|
||||
end
|
||||
else
|
||||
[~,cC] = size(check);
|
||||
Users = cell(cC+1,6);
|
||||
u = 1;
|
||||
ini = 1;
|
||||
for i=1:cC+1
|
||||
utente = char(US);
|
||||
% A partire dal company ID, risalgo agli utenti e alla loro mail di
|
||||
% quella company che sono admin
|
||||
if i == cC+1
|
||||
comando = ['select fname, lname, language_id, info, phone, sms_alarm, report, report_cov, '...
|
||||
'allertamento, email from users where email like ''' utente(ini:end) ''' '];
|
||||
else
|
||||
comando = ['select fname, lname, language_id, info, phone, sms_alarm, report, report_cov, '...
|
||||
'allertamento, email from users where email like ''' utente(ini:check(i)-1) ''' '];
|
||||
end
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
Info = curs.Data; % Cerco la lingua dell'unico destinatario
|
||||
[~,cI] = size(Info);
|
||||
if cI ~= 1
|
||||
Users(u,1:2) = Info(1:2);
|
||||
Users(u,3) = Info(10);
|
||||
Users(u,4:5) = Info(3:4);
|
||||
Users(u,6) = Info(5);
|
||||
Users(u,7:10) = Info(6:9);
|
||||
u = u+1;
|
||||
end
|
||||
if i ~= cC+1
|
||||
ini = check(i)+1;
|
||||
end
|
||||
end
|
||||
Users = Users(1:u-1,:);
|
||||
end
|
||||
else
|
||||
% Company Manager
|
||||
Role = ' 2 ';
|
||||
% A partire dal company ID, risalgo agli utenti e alla loro mail di
|
||||
% quella company che sono admin
|
||||
comando = ['select fname, lname, email, language_id, info, phone, sms_alarm, report, report_cov, '...
|
||||
'allertamento from users where company_id like ''' Company_id ''' and role_id = ''' Role ''' '];
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
Users = curs.Data;
|
||||
end
|
||||
else
|
||||
% Company Manager
|
||||
Role = ' 2 ';
|
||||
% A partire dal company ID, risalgo agli utenti e alla loro mail di
|
||||
% quella company che sono admin
|
||||
comando = ['select fname, lname, email, language_id, info, phone, sms_alarm, report, report_cov, '...
|
||||
'allertamento from users where company_id like ''' Company_id ''' and role_id = ''' Role ''' '];
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
Users = curs.Data;
|
||||
end
|
||||
else
|
||||
Users = [];
|
||||
end
|
||||
|
||||
% Elimino gli utenti che non possono essere allertati
|
||||
[rU,cU] = size(Users);
|
||||
al = 1;
|
||||
sms = 1;
|
||||
rpt = 1;
|
||||
Users_Alert = cell(1,1);
|
||||
Users_SMS = cell(1,1);
|
||||
Users_Report = cell(1,1);
|
||||
if cU > 1
|
||||
for u = 1:rU
|
||||
if cell2mat(Users(u,10)) == 1
|
||||
[rUA,cUA] = size(Users_Alert);
|
||||
if rUA == 1 && cUA == 1
|
||||
clear Users_Alert
|
||||
end
|
||||
Users_Alert(al,:) = Users(u,:);
|
||||
al = al+1;
|
||||
if cell2mat(Users(u,7)) == 1
|
||||
[rUA,cUA] = size(Users_SMS);
|
||||
if rUA == 1 && cUA == 1
|
||||
clear Users_SMS
|
||||
end
|
||||
Users_SMS(sms,:) = Users(u,:);
|
||||
sms = sms+1;
|
||||
end
|
||||
end
|
||||
if cell2mat(Users(u,8)) == 1
|
||||
[rUA,cUA] = size(Users_Report);
|
||||
if rUA == 1 && cUA == 1
|
||||
clear Users_Report
|
||||
end
|
||||
Users_Report(rpt,:) = Users(u,:);
|
||||
rpt = rpt+1;
|
||||
end
|
||||
end
|
||||
end
|
||||
ini_CoV = al;
|
||||
|
||||
% Cerco se allertare o meno i Cone of Visions
|
||||
comando = ['select conn_path from units where name like ''' IDcentralina ''' '];
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
Auth = curs.Data; % Se pari a 1 autorizzo i Cone of Visions, altrimenti no
|
||||
|
||||
if strcmp(char(Auth),'Yes')
|
||||
Mail = 1;
|
||||
% Cone of vision
|
||||
% A partire dal site ID, risalgo al USER ID degli utenti nel
|
||||
% cone-of-vision per quel sito
|
||||
comando = ['select user_id from coneofvisions where site_id like ''' siteID ''' '];
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
CoV = cell2mat(curs.Data);
|
||||
|
||||
% A partire dal USER ID, risalgo agli utenti e alla loro email se sono company manager
|
||||
[rC, ~] = size(CoV);
|
||||
if strcmp(char(CoV(1,:)),'No Data') % almeno un utente da cercare nel database
|
||||
Users_CoV = [];
|
||||
else
|
||||
ii = 1;
|
||||
for i=1:rC
|
||||
Utente = num2str(CoV(i,1));
|
||||
Role = ' 2 '; % Company Manager
|
||||
comando = ['select fname, lname, email, language_id, info, phone, sms_alarm, report, report_cov, '...
|
||||
'allertamento from users where id = ''' Utente ''' and role_id = ''' Role ''' '];
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
UC = curs.Data;
|
||||
[~,cUC] = size(UC);
|
||||
Role = ' 5 '; % Super Company Manager
|
||||
comando = ['select fname, lname, email, language_id, info, phone, sms_alarm, report, report_cov, '...
|
||||
'allertamento from users where id = ''' Utente ''' and role_id = ''' Role ''' '];
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
UC2 = curs.Data;
|
||||
[~,cUC2] = size(UC2);
|
||||
if cUC ~= 1
|
||||
Users_CoV(ii,:) = UC;
|
||||
ii = ii+1;
|
||||
elseif cUC2 ~= 1
|
||||
Users_CoV(ii,:) = UC2;
|
||||
ii = ii+1;
|
||||
end
|
||||
end
|
||||
end
|
||||
[rUC,cUC] = size(Users_CoV);
|
||||
[rUA,cUA] = size(Users_Alert);
|
||||
if cUC > 1
|
||||
for u = 1:rUC
|
||||
if cell2mat(Users_CoV(u,10)) == 1 && cell2mat(Users_CoV(u,9)) == 1
|
||||
salta = 0;
|
||||
for cov = 1:rUA
|
||||
if cUA > 1
|
||||
A = strfind(char(Users_CoV(u,3)),char(Users_Alert(cov,3)));
|
||||
if A == 1
|
||||
salta = 1;
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if salta == 0
|
||||
if cUA > 1
|
||||
Users_Alert(al,:) = Users_CoV(u,:);
|
||||
else
|
||||
Users_Alert = Users_CoV(u,:);
|
||||
end
|
||||
al = al+1;
|
||||
if cell2mat(Users_CoV(u,7)) == 1
|
||||
[rSMS,cSMS] = size(Users_SMS);
|
||||
if rSMS == 1 && cSMS == 1
|
||||
clear Users_SMS
|
||||
end
|
||||
Users_SMS(sms,:) = Users_CoV(u,:);
|
||||
sms = sms+1;
|
||||
end
|
||||
end
|
||||
end
|
||||
if cell2mat(Users_CoV(u,9)) == 1
|
||||
salta = 0;
|
||||
for cov = 1:rUA
|
||||
if cUA > 1
|
||||
A = strfind(char(Users_CoV(u,3)),char(Users_Alert(cov,3)));
|
||||
if A == 1
|
||||
salta = 1;
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if salta == 0
|
||||
[rUA,cUA] = size(Users_Report);
|
||||
if rUA == 1 && cUA == 1
|
||||
clear Users_Report
|
||||
end
|
||||
Users_Report(rpt,:) = Users_CoV(u,:);
|
||||
rpt = rpt+1;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
Users_CoV = [];
|
||||
end
|
||||
|
||||
[rU,cU] = size(Users);
|
||||
[rC,cC] = size(Users_CoV);
|
||||
if cC > 1 && rC > 0 && cU > 1 % comando ha trovato informazioni e le ha scritte in Users
|
||||
Users(rU+1:rU+rC,1:10) = Users_CoV;
|
||||
elseif cC > 1 && rC > 0 && cU == 0
|
||||
Users = Users_CoV;
|
||||
end
|
||||
|
||||
[rU,~] = size(Users);
|
||||
if rU == 0
|
||||
Mail = 0;
|
||||
end
|
||||
% Controllo che la centralina non sia scaduta
|
||||
comando = ['select duedate from units where name = ''' IDcentralina ''' '];
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
Date = curs.Data;
|
||||
Check = cell2mat(Date);
|
||||
if strcmp(Check,'null') || strcmp(Check,'No Data')
|
||||
% La data di scadenza centralina non è impostata
|
||||
sms = 1;
|
||||
else
|
||||
if datenum(Date) < now % Centralina scaduta
|
||||
sms = 0;
|
||||
Users_Alert = [];
|
||||
Users_SMS = [];
|
||||
Users_Report = [];
|
||||
else
|
||||
sms = 1;
|
||||
end
|
||||
end
|
||||
|
||||
% A chi mando la mail
|
||||
activeIT = 0;
|
||||
activeEN = 0;
|
||||
[~,c1] = size(Users_Alert);
|
||||
[~,c2] = size(Users_Report);
|
||||
if c1 == 1 && c2 == 1
|
||||
Users_Lang = [];
|
||||
elseif c1 == 1
|
||||
Users_Lang = Users_Report;
|
||||
elseif c2 == 1
|
||||
Users_Lang = Users_Alert;
|
||||
else
|
||||
Users_Lang = [Users_Alert; Users_Report];
|
||||
end
|
||||
[rU,cU] = size(Users_Lang);
|
||||
if cU >1 % sono presenti utenti a cui inviare la mail
|
||||
for i = 1:rU
|
||||
if Users_Lang{i,4} == 2
|
||||
activeIT = 1;
|
||||
else
|
||||
activeEN = 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
text = 'Users function worked correctly';
|
||||
fprintf(fileID,fmt,text);
|
||||
fclose(fileID);
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user