clear;
clc;
load('')

% Userbestimmung:

%user = unique(WorkLog(:,3))

%__________________________________________________________________________

% LOGIN:

TIn = datenum(WorkLog(:,1), 'yyyy-mm-dd')


TageIn=arrayfun(@(x) datestr(x,'dd.mm.yyyy'),TIn, 'UniformOutput' ,false);

start='01.06.2017'
ende='30.06.2017'

startnumIn=datenum(start,'dd.mm.yyyy');
endenumIn=datenum(ende,'dd.mm.yyyy');
TageNumIn=startnumIn:1:endenumIn;
TageIn=arrayfun(@(x) datestr(x,'dd.mm.yyyy'),TageNumIn, 'UniformOutput' ,false);
Zeitfenster=arrayfun(@(x) datestr(x,'dd.mm.yyyy'),TageNumIn, 'UniformOutput' ,false);
TageIn=arrayfun(@(x) datestr(x,'dd.mm.yyyy'),TIn, 'UniformOutput' ,false);
tempIn=cellfun(@(x) find(strcmp(TageIn,x)), Zeitfenster, 'UniformOutput' ,false);

Zeitfenster(2,:)=tempIn

%_______________________________________________________________________

% LOGOUT:

TOut = datenum(WorkLog(:,2), 'yyyy-mm-dd')


TageOut=arrayfun(@(x) datestr(x,'dd.mm.yyyy'),TOut, 'UniformOutput' ,false);

start='01.06.2017'
ende='30.06.2017'

startnumOut=datenum(start,'dd.mm.yyyy');
endenumOut=datenum(ende,'dd.mm.yyyy');
TageNumOut=startnumOut:1:endenumOut;
TageOut=arrayfun(@(x) datestr(x,'dd.mm.yyyy'),TOut, 'UniformOutput' ,false);
tempOut=cellfun(@(x) find(strcmp(TageOut,x)), Zeitfenster(1,:), 'UniformOutput' ,false)

Zeitfenster(3,:)=tempOut

%___________________________________________________________________________________________

% Überprüfung der Cells:

len=length(Zeitfenster(1,:));
Auslastung=zeros(1,len);
for i=1:len
    %case länger als ein Tag
    if ~isempty(Zeitfenster{2,i})&&isempty(Zeitfenster{3,i})
        pos=find(cellfun(@(x) ~isempty(x),Zeitfenster(3,i:end)),1,'first');
        pos=pos+i-1;
        Auslastung(1,i:pos)=100;
        i=pos;
        x=num2cell(Auslastung);
        Zeitfenster(4,:) = x;
    end

    
    % Berechnung der Differenz der Loginzeit pro Tag
    logInIndex = Zeitfenster{2,i};
    logOutIndex = Zeitfenster{3,i};
    logIn = WorkLog(logInIndex,1);
    logOut = WorkLog(logOutIndex,2);
    AnzLogIn = length(logInIndex);
    AnzLogOut = length(logOutIndex);
    form = 'yyyy-mm-ddTHH:MM:SS';
    % case Login + Logoff am selben Tag
    if ~isempty(Zeitfenster{2,i})&&~isempty(Zeitfenster{3,i})
        % Kein Login über Nacht
        if length(Zeitfenster{3,i})==length(Zeitfenster{2,i})
            
            diffZ = arrayfun(@(logIn,logOut) (datenum(logOut, form)-datenum(logIn, form)), logIn,logOut);
            addZ = datenum([datestr(datenum(logIn(1,1),'yyyy-mm-dd'),'yyyy-mm-dd') 'T24:00:00.000+0200'], form)-datenum(logIn(1,1),form);
            logZeit=sum(diffZ)+addZ;          
            AuslastungG(1,i)=logZeit/1*100;
            Y=num2cell(round(AuslastungG));
            Zeitfenster(4,i)= {Y};
          
        end
        
        % Login über Nacht
        if AnzLogIn>AnzLogOut
            
            diffZIN = arrayfun(@(logIn,logOut) (datenum(logOut, form)-datenum(logIn, form)), logIn(2:end),logOut);
            addZIN = datenum([datestr(datenum(logIn(1,1),'yyyy-mm-dd'),'yyyy-mm-dd') 'T24:00:00.000+0200'], form)-datenum(logIn(1,1),form);
            ONZeit=sum(diffZIN)+addZIN;
            AuslastungI(1,i)=ONZeit/1*100;
            z=num2cell(round(AuslastungI))          
            Zeitfenster(4,i)={z};
            
        else if AnzLogIn<AnzLogOut
                
                diffZOUT = arrayfun(@(logIn,logOut) (datenum(logOut, form)-datenum(logIn, form)), logIn,logOut(1:end-1));
                addZOut = datenum(logOut(1,end),form)- datenum([datestr(datenum(logOut(1,1),'yyyy-mm-dd'),'yyyy-mm-dd') 'T00:00:00.000+0200'], form);
                OFFZeit=sum(diffZOUT)+addZOut;
                AuslastungO(1,i)=OFFZeit/1*100;
                o=num2cell(round(AuslastungO));            
                Zeitfenster(4,i)={o};
                 
            end
        end
    end
end


% Histo = cell2mat(Zeitfenster);
% 
% 
% 
% % Plotten:
% 
% figure 
% hold on
% grid on
% title('Überschrift')
% xlabel('Zeit in Tagen')
% ylabel('Auslastung [%]')
% skalaY = 0:10:100;
% skalaX = 1:1:31;
% 
% set(gca, 'ytick', skalaY)
% set(gca, 'yticklabel', skalaY)
% 
% set(gca, 'xtick', skalaX)
% set(gca, 'xticklabel', skalaX)
% 
% 
% histogram(Histo, 'm');
%         
      
