118 lines
3.4 KiB
Matlab
Executable File
118 lines
3.4 KiB
Matlab
Executable File
function [Mail,Users_Report,activeEN,siteID,NomeSito] = 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)));
|
|
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);
|
|
|
|
% 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, report from users where '...
|
|
'company_id like ''' Company_id ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
Users = curs.Data;
|
|
|
|
% Elimino gli utenti che non devono ricevere il report
|
|
[rU,cU] = size(Users);
|
|
Users_Report = cell(1,1);
|
|
rpt = 1;
|
|
if cU > 1
|
|
for u = 1:rU
|
|
if cell2mat(Users(u,5)) == 1
|
|
[rUA,cUA] = size(Users_Report);
|
|
if rUA == 1 && cUA == 1
|
|
clear Users_Report
|
|
end
|
|
Users_Report(rpt,:) = Users(u,1:4);
|
|
rpt = rpt+1;
|
|
end
|
|
end
|
|
end
|
|
ini_CoV = rpt;
|
|
|
|
% 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);
|
|
|
|
comando = ['select report_cov from coneofvisions where site_id like ''' siteID ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
Auth_CoV = cell2mat(curs.Data);
|
|
|
|
% A partire dal USER ID, risalgo agli utenti e alla loro email se sono company manager
|
|
[rC, ~] = size(CoV);
|
|
n = 1;
|
|
if strcmp(char(CoV(1,:)),'No Data') % almeno un utente da cercare nel database
|
|
else
|
|
for i=1:rC
|
|
if Auth_CoV(i) == 1
|
|
Utente = num2str(CoV(i,1));
|
|
comando = ['select fname, lname, email, language_id '...
|
|
'from users where id = ''' Utente ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
COV = curs.Data;
|
|
Users_CoV(n,:) = COV;
|
|
n = n+1;
|
|
end
|
|
end
|
|
end
|
|
if n>1 % Esistono utenti CoV per il report
|
|
[~,cU] = size(Users_Report);
|
|
if cU == 1
|
|
Users_Report = Users_CoV;
|
|
else
|
|
Users_Report(rpt:rpt+n-2,:) = Users_CoV;
|
|
end
|
|
end
|
|
[rU,cU] = size(Users_Report);
|
|
if rU == 0
|
|
Mail = 0;
|
|
end
|
|
|
|
% A chi mando la mail
|
|
activeEN = 0;
|
|
if cU >1 % sono presenti utenti a cui inviare la mail
|
|
for i = 1:rU
|
|
if Users_Report{i,4} == 2
|
|
activeIT = 1;
|
|
else
|
|
activeEN = 1;
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
text = 'Users function worked correctly';
|
|
fprintf(fileID,fmt,text);
|
|
fclose(fileID);
|
|
|
|
end |