Files
matlab-python/Tilt/Users_Def.m

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