From 5fb8d6000d925d3e2ead44943028f8e54b018395 Mon Sep 17 00:00:00 2001
From: Aleksandra <aleks.dimitrova.21@gmail.com>
Date: Mon, 3 Jul 2023 10:21:14 +0200
Subject: [PATCH] format check for the uploaded event log

---
 backend/__pycache__/eventlog.cpython-311.pyc | Bin 10246 -> 11244 bytes
 backend/eventlog.py                          |  33 ++++++++++++++++++-
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/backend/__pycache__/eventlog.cpython-311.pyc b/backend/__pycache__/eventlog.cpython-311.pyc
index 827cee78f49c89fcbea7bf5fd479d99fa42870b9..d3d0beae52e96eb33fa31b5a6a16d568550c2d20 100644
GIT binary patch
delta 1728
zcmZn*coWXIoR^o2fq{YHK+B>OR@I4o5{&mIs&6((5o%$Gl1r6O5zb};Nf+@jF{H{Z
zV_;xd4dQ|^BSQ*fFc@o!Y-VBH#x*&Hk&`Kdaq>}aC9@2M6voAjwM-cdDNKtQYnf{p
zvlzj;7#J8_7-BhVS!!5nn93N7m>C&Tn1dO5xM~;|Fin0apj7X|5L*(%#K2I?TFX|$
zmck+l)5lQDUcwINFx0S@a3FZgm>3vVgWU=eD~1|d!<NE|q@SaPqlOt_X$@Nn8<H$1
z*z|gkeg+1H8qN}M$UwL_jb}$PfD3E@L<2(&7h(N9r70Z244RyNb}S4G3`HROiiEjA
zOkNPd!@$5`$IrmPFgZp<l83t>CowryA-^akwP>=Ph`azln5mGQpIeZVT9TSFnN`GU
za;b>*<oCkjlWz!%*SkSX1RDr4s|aLjh$dT+B?AM)E%xO6oYLI9;#(Y<C8<S4`Q^p8
zxH5|~^NLFn^O93<F=ytL6bUjgFlcfYnS)#da>y<I#GIV`^3;@gm}ViEKw@%9W?5!Q
zW@_;*Zir-kd|qO1YLNm+vn+@Z1rcH(yIG4%5{pW1F{kFG6oZ_nfB;1jAO$>W`9-;j
zCGp7_sma+z!3+!xNem1O#oUYx3=Ir-1ymM<Toll{BB0ga`9RF?0vI*;e_&#e%4hk&
z043|C@>wphh&>QjxFW9cfq{ut5=?Y(-{2OTk$-_(_X4->4Pl81rV~s*Ff;JzePCmd
zRJtyqbxA_&qJ+*B37roN{2)F2tdgBP9jqOtH-yAza7@wfV86>RIYWJ^@kM_1EBxvo
z7#KMvq2@dgmY5-RMOdYS;|8~I@&##-6$o1%2#8(~Q@bLd-oXkoL3ODp78Ce{C-`0A
zQ|@2}DN&wVdXZoC3co6{B_Eg>IVC@^G4Kd<m~39b?Ze1g<OoV6th~OA&69(9yIA8G
z7#JEhKjMAC>QQ6|3Up5p;Q=C?K!h`hZ~+naAi@DeSc3=~5Mc`<TtS2zh;RoHj*~Zu
zxJVZHg4p2H!(E(TR1#m7m{XcsTogH(UsQ!H1|%6a*-~^8W69(*qH|a$FfcH5Y|a%^
zW|s%WUQsegK^lli0TJ0CA_qj|O<pg1$hHQ=tOXHuAOe&TiyA<zMi9{iBAP)&3y5e1
z5p5u%9Yl0YUMJ_pI*);Y;mzj1a?Q;3RPr_`{qq;`fvf<#9_(<iXHr38=^!ElL}Y@9
zED!<qpmr{ZnGYfoKtv&kC;$;9AOd8dCTkHWo{A<+)>4)+=me#Dj^xDR)SS%Xl3VOW
zsl^~h5m<RYNRKW^1zT!aYF<fkQP1QuWdk-)fh^28d5!XaP}$39H+idy{Nyu=GCqt9
zDGb33noNFGJYWqu`RRHUsl}R1MP?wQK>2AULy;7S4bE;Xxrv#1MJpK?7|a<N7>Yqz
zwt?X*8v`p>ug+v=Rdq&%$=RxMDpNsDV9hJdEvPIi1+hUnJtsA}Br`v+xQH2K+~mn?
zRp)4eEP(nBBnXO^B9LRjR@~x<2bT=-@kJ{p=c-9?ZDwF#0M!n~b(8zm{_smP3VdLI
X6E>5()m{0S88tpIzzLqo_tn(_FC>uF

delta 857
zcmaD8-WI^OoR^o2fq{XcZ~DTNZiR__5{x${s&5uZl}i!IW&%kR@h~x@%1-<s$tb*;
zi*Xy*W_tlEM!{eF`9&$IMGDFJxdl0?C8;Ts>jZrnQzxGh>|%9gU|>kv94+*MmHiiY
zK~7?F>STRBxykZ;;*(eNT28Lvl@n$wNKDRFaQp?Koj~;D`@9ZJMK+VWC0rzLF=ytL
z6j?GbFx=uU&Mzv7FH6iRO)V~RnEXOQh0U3PfuYEDvXJB?#>~k}CFiiVF)%P>ZFZAV
zW|#K_$$5bYUl8F9B7#6fFo+19+@W~Lwg|*51`#D7q7+1wfrxStQ2`<<K|~dZs0I-=
zAfgsT)J<+z@?xFBz`$^B^EIVr=K4sGXcUNu1`#nJA{Io%frxkzkpLnRK|~UWNCpup
zAR-k+q=5(<1_lOA{vtjQ8|-?p!@-{M0g3s62!9X}03rfG1lWTfAs}WLh;RoH5g;NQ
zL}Y>pkb#=4MW7fd0)^5o)}q9`^we9-IjMO?0w7Ddip)U@>nAIyi%Wp@w1W7$ps;64
zElbTSDK2W7?5}RXHiv<M;VZ-BR`vgryJa~U9VYi_$k(SZEn{L}SPf1opwzOAk%3_~
zBZvjUj0`CZ!3>(renlW(RPlh#%gImIOD-<cWGXTP*#vUdN`@jS5L*IdD@$%-W?s>J
z1_lO6Mh1pr1qKF&28O3BoV}V894FLW<WjrBrFM};{R)fv1(wOGn&OP|lWjHSRJuWW
zS@TMB3o47UKy2>h{G6QB<dV$%yy7Beknx?9>ow=N!2_cR6pck7Z-H&Q#StH$mzbLx
zA73;Nq#Ev`UmP~M`6;D2sdhyx85kHqzAMh3oTl|>a-p^>KNF+I2L?F7HTkHvIsl}X
B&vpO+

diff --git a/backend/eventlog.py b/backend/eventlog.py
index d97fb3b..84b1f93 100644
--- a/backend/eventlog.py
+++ b/backend/eventlog.py
@@ -95,6 +95,36 @@ def convert_to_dataframe(name):
     return event_log_df
 
 
+def format_check(name):
+    event_log = convert_to_dataframe(name)
+
+    allowed_columns = {'CaseID', 'Activity', 'StartTimestamp', 'EndTimestamp'}
+    allowed_activities = {'place order', 'arrange standard order', 'arrange custom order', 'pick from stock A', 'pick from stock B', 'pick from stock C', 'manufacture A', 'manufacture B', 'pack A', 'pack B', 'pack C', 'attempt delivery A', 'attempt delivery B', 'attempt delivery C', 'order completed'}
+
+    for column_name in event_log.columns:
+        if column_name not in allowed_columns:
+            return False
+
+    for index, event in event_log.iterrows():
+        case_id = event['CaseID']
+        if not isinstance(case_id, int):
+            return False
+
+        activity = event['Activity']
+        if activity not in allowed_activities:
+            return False
+        
+        start = event['StartTimestamp']
+        if not isinstance(start, float):
+            return False
+        
+        end = event['EndTimestamp']
+        if not isinstance(end, float):
+            return False
+        
+    return True
+
+
 def get_active_cases(name):
     event_log_df = convert_to_dataframe(name)
     
@@ -280,7 +310,8 @@ def show_active_cases(name):
 
 def main():
     # generate_event_log(10000)
-    print(get_state(5, "eventlog.csv"))
+    # print(get_state(5, "eventlog.xes"))
+    print(format_check("eventlog.xes"))
 
 
 if __name__ == "__main__":
-- 
GitLab