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