Index: ckend/DistributorApp_DB_Scheme.xml
===================================================================
--- backend/DistributorApp_DB_Scheme.xml	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,1 +1,0 @@
-<drawing><figures><ent id="0"><children><r id="1" x="655.03759765625" y="171.5" w="80" h="40"><a><fillColor><color rgba="#ffebffe8"/></fillColor></a></r><t id="2" x="678.57861328125" y="184.2080078125"><a><text><string>USER</string></text></a></t></children></ent><ent id="3"><children><r id="4" x="1110" y="320" w="80" h="40"><a><fillColor><color rgba="#ffebffe8"/></fillColor></a></r><t id="5" x="1123.7470703125" y="332.7080078125"><a><text><string>VEHICLE</string></text></a></t></children></ent><ent id="6"><children><r id="7" x="1110" y="530" w="80" h="40"><a><fillColor><color rgba="#ffebffe8"/></fillColor></a></r><t id="8" x="1119.958984375" y="542.7080078125"><a><text><string>DELIVERY</string></text></a></t></children></ent><ent id="9"><children><r id="a" x="806" y="708.625" w="105.34765625" h="40"><a><fillColor><color rgba="#ffebffe8"/></fillColor></a></r><t id="b" x="820.845703125" y="721.3330078125"><a><text><string>PRO_FORMA</string></text></a></t></children></ent><ent id="c"><children><r id="d" x="532" y="661.25" w="80" h="40"><a><fillColor><color rgba="#ffebffe8"/></fillColor></a></r><t id="e" x="546.1806640625" y="673.9580078125"><a><text><string>ARTICLE</string></text></a></t></children></ent><ent id="f"><children><r id="10" x="655.03759765625" y="526.5" w="80" h="40"><a><fillColor><color rgba="#ffebffe8"/></fillColor></a></r><t id="11" x="669.45263671875" y="539.2080078125"><a><text><string>ORDERS</string></text></a></t></children></ent><ent id="12"><children><r id="13" x="104.8125" y="171.5" w="80" h="40"><a><fillColor><color rgba="#ffebffe8"/></fillColor></a></r><t id="14" x="130.708984375" y="184.2080078125"><a><text><string>CITY</string></text></a></t></children></ent><ent id="15"><children><r id="16" x="438.5" y="315.5" w="80" h="40"><a><fillColor><color rgba="#ffebffe8"/></fillColor></a></r><t id="17" x="448.1337890625" y="328.2080078125"><a><text><string>MANAGER</string></text></a></t></children></ent><ent id="18"><children><r id="19" x="655.03759765625" y="315.5" w="80" h="40"><a><fillColor><color rgba="#ffebffe8"/></fillColor></a></r><t id="1a" x="660.91259765625" y="328.2080078125"><a><text><string>CUSTOMER</string></text></a></t></children></ent><ent id="1b"><children><r id="1c" x="859" y="315.5" w="80" h="40"><a><fillColor><color rgba="#ffebffe8"/></fillColor></a></r><t id="1d" x="875.6123046875" y="328.2080078125"><a><text><string>DRIVER</string></text></a></t></children></ent><disjuncao id="1e"><children><circ id="1f" x="685.03759765625" y="259.5" w="20" h="20"><a><fillColor><color rgba="#fff5f2e0"/></fillColor></a></circ><tn id="20" x="689.03759765625" y="260.5"><a><fontBold><boolean>true</boolean></fontBold><fontSize><double>16</double></fontSize><text><string>d</string></text></a></tn></children></disjuncao><llabelDoubleGeneralizacao id="21" labelGeneralizacaoText="characteristic"><points><p colinear="true" x="695.03759765625" y="211.5" c1x="-2.5" c1y="127.5" c2x="-2.5" c2y="127.5"/><p colinear="true" x="695.03759765625" y="259.5" c1x="-2.5" c1y="127.5" c2x="-2.5" c2y="127.5"/></points><startConnector><rConnector id="22"><Owner><ent ref="0"/></Owner></rConnector></startConnector><endConnector><rConnector id="23"><Owner><disjuncao ref="1e"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor></a><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor></a></llabelDoubleGeneralizacao><ent id="24"><children><r id="25" x="438.5" y="510" w="80" h="40"><a><fillColor><color rgba="#ffebffe8"/></fillColor></a></r><t id="26" x="438.9814453125" y="522.7080078125"><a><text><string>WAREHOUSE</string></text></a></t></children></ent><rel id="27"><children><diamond id="28" x="986" y="315.5" w="80" h="40"><a><fillColor><color rgba="#ffddddff"/></fillColor></a></diamond><t id="29" x="1007.8037109375" y="328.2080078125"><a><text><string>drives</string></text></a></t></children></rel><llabelDoubleUm id="2a"><points><p colinear="true" x="986" y="335.5" c1x="-3" c1y="62" c2x="-3" c2y="62"/><p colinear="true" x="939" y="335.5" c1x="-3" c1y="62" c2x="-3" c2y="62"/></points><startConnector><rConnector id="2b"><Owner><rel ref="27"/></Owner></rConnector></startConnector><endConnector><rConnector id="2c"><Owner><ent ref="1b"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor></a></llabelDoubleUm><llabelDoubleUm id="2d"><points><p colinear="true" x="1066" y="336.9516129032258" c1x="-3" c1y="62" c2x="-3" c2y="62"/><p colinear="true" x="1110" y="338.5483870967742" c1x="-3" c1y="62" c2x="-3" c2y="62"/></points><startConnector><rConnector id="2e"><Owner><rel ref="27"/></Owner></rConnector></startConnector><endConnector><rConnector id="2f"><Owner><ent ref="3"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor></a></llabelDoubleUm><rel id="30"><children><diamond id="31" x="643.21923828125" y="416.5" w="103.63671875" h="40"><a><fillColor><color rgba="#ffddddff"/></fillColor></a></diamond><t id="32" x="653.21923828125" y="429.2080078125"><a><text><string>creates_order</string></text></a></t></children></rel><llabelDoubleMuitos id="33"><points><p colinear="true" x="695.03759765625" y="456.5" c1x="36.01879882812506" c1y="127.5" c2x="36.01879882812506" c2y="127.5"/><p colinear="true" x="695.03759765625" y="526.5" c1x="36.01879882812506" c1y="127.5" c2x="36.01879882812506" c2y="127.5"/></points><startConnector><rConnector id="34"><Owner><rel ref="30"/></Owner></rConnector></startConnector><endConnector><rConnector id="35"><Owner><ent ref="f"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor><text><string>N</string></text></a></llabelDoubleMuitos><llabelUm id="36"><points><p colinear="true" x="695.03759765625" y="416.5" c1x="36.01879882812506" c1y="127.5" c2x="36.01879882812506" c2y="127.5"/><p colinear="true" x="695.03759765625" y="355.5" c1x="36.01879882812506" c1y="127.5" c2x="36.01879882812506" c2y="127.5"/></points><startConnector><rConnector id="37"><Owner><rel ref="30"/></Owner></rConnector></startConnector><endConnector><rConnector id="38"><Owner><ent ref="18"/></Owner></rConnector></endConnector></llabelUm><rel id="39"><children><diamond id="3a" x="438.5" y="423.75" w="80" h="40"><a><fillColor><color rgba="#ffddddff"/></fillColor></a></diamond><t id="3b" x="451.2216796875" y="436.4580078125"><a><text><string>manages</string></text></a></t></children></rel><llabelDoubleUm id="3c"><points><p colinear="true" x="478.5" y="423.75" c1x="-297.984375" c1y="114" c2x="-297.984375" c2y="114"/><p colinear="true" x="478.5" y="355.5" c1x="-297.984375" c1y="114" c2x="-297.984375" c2y="114"/></points><startConnector><rConnector id="3d"><Owner><rel ref="39"/></Owner></rConnector></startConnector><endConnector><rConnector id="3e"><Owner><ent ref="15"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor></a></llabelDoubleUm><llabelDoubleUm id="3f"><points><p colinear="true" x="478.5" y="463.75" c1x="-297.984375" c1y="114" c2x="-297.984375" c2y="114"/><p colinear="true" x="478.5" y="510" c1x="-297.984375" c1y="114" c2x="-297.984375" c2y="114"/></points><startConnector><rConnector id="40"><Owner><rel ref="39"/></Owner></rConnector></startConnector><endConnector><rConnector id="41"><Owner><ent ref="24"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor></a></llabelDoubleUm><rel id="42"><children><diamond id="43" x="298" y="171.5" w="80" h="40"><a><fillColor><color rgba="#ffddddff"/></fillColor></a></diamond><t id="44" x="307.0478515625" y="184.2080078125"><a><text><string>located_in</string></text></a></t></children></rel><llabelDoubleUm id="45"><points><p colinear="true" x="378" y="191.5" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/><p colinear="true" x="655.03759765625" y="191.5" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/></points><startConnector><rConnector id="46"><Owner><rel ref="42"/></Owner></rConnector></startConnector><endConnector><rConnector id="47"><Owner><ent ref="0"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor></a></llabelDoubleUm><llabelMuitos id="48"><points><p colinear="true" x="298" y="191.5" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/><p colinear="true" x="184.8125" y="191.5" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/></points><startConnector><rConnector id="49"><Owner><rel ref="42"/></Owner></rConnector></startConnector><endConnector><rConnector id="4a"><Owner><ent ref="12"/></Owner></rConnector></endConnector><a><text><string>N</string></text></a></llabelMuitos><rel id="4b"><children><diamond id="4c" x="640.04638671875" y="610.375" w="109.982421875" h="40"><a><fillColor><color rgba="#ffddddff"/></fillColor></a></diamond><t id="4d" x="650.04638671875" y="623.0830078125"><a><text><string>order_contains</string></text></a></t></children></rel><llabelDoubleMuitos id="4e"><points><p colinear="true" x="695.03759765625" y="610.375" c1x="25.523193359375057" c1y="127.5" c2x="25.523193359375057" c2y="127.5"/><p colinear="true" x="695.03759765625" y="566.5" c1x="25.523193359375057" c1y="127.5" c2x="25.523193359375057" c2y="127.5"/></points><startConnector><rConnector id="4f"><Owner><rel ref="4b"/></Owner></rConnector></startConnector><endConnector><rConnector id="50"><Owner><ent ref="f"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor><text><string>N</string></text></a></llabelDoubleMuitos><rel id="51"><children><diamond id="52" x="438.5" y="593.75" w="80" h="40"><a><fillColor><color rgba="#ffddddff"/></fillColor></a></diamond><t id="53" x="453.43359375" y="606.4580078125"><a><text><string>in_stock</string></text></a></t></children></rel><llabelMuitos id="54"><points><p colinear="true" x="478.5" y="593.75" c1x="-297.984375" c1y="114" c2x="-297.984375" c2y="114"/><p colinear="true" x="478.5" y="550" c1x="-297.984375" c1y="114" c2x="-297.984375" c2y="114"/></points><startConnector><rConnector id="55"><Owner><rel ref="51"/></Owner></rConnector></startConnector><endConnector><rConnector id="56"><Owner><ent ref="24"/></Owner></rConnector></endConnector><a><text><string>N</string></text></a></llabelMuitos><rel id="57"><children><diamond id="58" x="1110" y="430" w="80" h="40"><a><fillColor><color rgba="#ffddddff"/></fillColor></a></diamond><t id="59" x="1126.5830078125" y="442.7080078125"><a><text><string>delivers</string></text></a></t></children></rel><llabelUm id="5a"><points><p colinear="true" x="1150" y="430" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/><p colinear="true" x="1150" y="360" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/></points><startConnector><rConnector id="5b"><Owner><rel ref="57"/></Owner></rConnector></startConnector><endConnector><rConnector id="5c"><Owner><ent ref="3"/></Owner></rConnector></endConnector></llabelUm><rel id="5d"><children><diamond id="5e" x="818.673828125" y="610.5" w="80" h="40"><a><fillColor><color rgba="#ffddddff"/></fillColor></a></diamond><t id="5f" x="828.76171875" y="623.2080078125"><a><text><string>generates</string></text></a></t></children></rel><llabelDoubleUm id="60"><points><p colinear="true" x="858.673828125" y="650.5" c1x="41.6630859375" c1y="127.625" c2x="41.6630859375" c2y="127.625"/><p colinear="true" x="858.673828125" y="708.625" c1x="41.6630859375" c1y="127.625" c2x="41.6630859375" c2y="127.625"/></points><startConnector><rConnector id="61"><Owner><rel ref="5d"/></Owner></rConnector></startConnector><endConnector><rConnector id="62"><Owner><ent ref="9"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor></a></llabelDoubleUm><llabelUm id="63"><points><p colinear="true" x="819.7128208705357" y="610.5" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/><p colinear="true" x="733.9986049107142" y="566.5" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/></points><startConnector><rConnector id="64"><Owner><rel ref="5d"/></Owner></rConnector></startConnector><endConnector><rConnector id="65"><Owner><ent ref="f"/></Owner></rConnector></endConnector></llabelUm><llabelMuitos id="66"><points><p colinear="true" x="506.2037037037037" y="633.75" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/><p colinear="true" x="544.2962962962963" y="661.25" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/></points><startConnector><rConnector id="67"><Owner><rel ref="51"/></Owner></rConnector></startConnector><endConnector><rConnector id="68"><Owner><ent ref="c"/></Owner></rConnector></endConnector><a><text><string>N</string></text></a></llabelMuitos><llabelMuitos id="69"><points><p colinear="true" x="646.6690088970363" y="650.375" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/><p colinear="true" x="612" y="664.71034026375" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/></points><startConnector><rConnector id="6a"><Owner><rel ref="4b"/></Owner></rConnector></startConnector><endConnector><rConnector id="6b"><Owner><ent ref="c"/></Owner></rConnector></endConnector><a><text><string>M</string></text></a></llabelMuitos><rel id="6c"><children><diamond id="6d" x="885" y="526.5" w="80" h="40"><a><fillColor><color rgba="#ffddddff"/></fillColor></a></diamond><t id="6e" x="899.7724609375" y="539.2080078125"><a><text><string>shipping</string></text></a></t></children></rel><llabelDoubleUm id="6f"><points><p colinear="true" x="965" y="547.1222222222223" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/><p colinear="true" x="1110" y="549.3777777777777" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/></points><startConnector><rConnector id="70"><Owner><rel ref="6c"/></Owner></rConnector></startConnector><endConnector><rConnector id="71"><Owner><ent ref="6"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor></a></llabelDoubleUm><llabelDoubleMuitos id="72"><points><p colinear="true" x="885" y="546.5" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/><p colinear="true" x="735.03759765625" y="546.5" c1x="-2" c1y="127.5" c2x="-2" c2y="127.5"/></points><startConnector><rConnector id="73"><Owner><rel ref="6c"/></Owner></rConnector></startConnector><endConnector><rConnector id="74"><Owner><ent ref="f"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor><text><string>N</string></text></a></llabelDoubleMuitos><generalizacaoLine id="75"><points><p colinear="true" x="695.03759765625" y="315.5" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="695.03759765625" y="279.9453125" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="76"><Owner><ent ref="18"/></Owner></rConnector></startConnector><endConnector><rConnector id="77"><Owner><disjuncao ref="1e"/></Owner></rConnector></endConnector></generalizacaoLine><atr id="78" nullable="false" attributeType="VARCHAR2(128)"><children><e id="79" x="547" y="91" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="7a" x="553.3173828125" y="93.7080078125"><a><text><string>user_name</string></text></a></t></children></atr><atr id="7b" nullable="false" attributeType="VARCHAR2(128)"><children><e id="7c" x="664" y="91" w="106.33203125" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="7d" x="674" y="93.7080078125"><a><text><string>user_surname</string></text></a></t></children></atr><atr id="7e" nullable="false" attributeType="VARCHAR2(128)"><children><e id="7f" x="119.75" y="130.5" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="80" x="142.939453125" y="133.2080078125"><a><text><string>name</string></text></a></t></children></atr><atr id="81" nullable="false" attributeType="VARCHAR2(128)"><children><e id="82" x="550" y="342" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="83" x="577.4697265625" y="344.7080078125"><a><text><string>EDB</string></text></a></t></children></atr><atr id="84" nullable="false" attributeType="VARCHAR2(128)"><children><e id="85" x="523" y="378" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="86" x="527.3046875" y="380.7080078125"><a><text><string>loc_address</string></text></a></t></children></atr><atr id="87" nullable="false" attributeType="VARCHAR2(128)"><children><e id="88" x="481" y="119" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="89" x="504.693359375" y="121.7080078125"><a><text><string>email</string></text></a></t></children></atr><atr id="8a" nullable="false" attributeType="VARCHAR2(128)"><children><e id="8b" x="863" y="94" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="8c" x="871.6640625" y="96.7080078125"><a><text><string>mobile_no</string></text></a></t></children></atr><atrchave id="8d" nullable="false" attributeType="NUMBER"><children><e id="8e" x="721" y="119" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="8f" x="735.6875" y="121.7080078125"><a><fontUnderlined><boolean>true</boolean></fontUnderlined><fontBold><boolean>true</boolean></fontBold><text><string>user_id</string></text></a></t></children></atrchave><atrchave id="90" nullable="false" attributeType="NUMBER"><children><e id="91" x="605" y="496" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="92" x="616.224609375" y="498.7080078125"><a><fontUnderlined><boolean>true</boolean></fontUnderlined><fontBold><boolean>true</boolean></fontBold><text><string>order_id</string></text></a></t></children></atrchave><atrchave id="93" nullable="false" attributeType="NUMBER"><children><e id="94" x="255" y="489" w="115.150390625" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="95" x="265" y="491.7080078125"><a><fontUnderlined><boolean>true</boolean></fontUnderlined><fontBold><boolean>true</boolean></fontBold><text><string>warehouse_id</string></text></a></t></children></atrchave><atrchave id="96" nullable="false" attributeType="NUMBER"><children><e id="97" x="222" y="130.5" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="98" x="239.2685546875" y="133.2080078125"><a><fontUnderlined><boolean>true</boolean></fontUnderlined><fontBold><boolean>true</boolean></fontBold><text><string>city_id</string></text></a></t></children></atrchave><atrchave id="99" nullable="false" attributeType="NUMBER"><children><e id="9a" x="1027" y="368" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="9b" x="1032.7138671875" y="370.7080078125"><a><fontUnderlined><boolean>true</boolean></fontUnderlined><fontBold><boolean>true</boolean></fontBold><text><string>vehicle_id</string></text></a></t></children></atrchave><atrchave id="9c" nullable="false" attributeType="NUMBER"><children><e id="9d" x="1038" y="484" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="9e" x="1040.435546875" y="486.7080078125"><a><fontUnderlined><boolean>true</boolean></fontUnderlined><fontBold><boolean>true</boolean></fontBold><text><string>delivery_id</string></text></a></t></children></atrchave><atrchave id="9f" nullable="false" attributeType="NUMBER"><children><e id="a0" x="447" y="756" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="a1" x="455.1484375" y="758.7080078125"><a><fontUnderlined><boolean>true</boolean></fontUnderlined><fontBold><boolean>true</boolean></fontBold><text><string>article_id</string></text></a></t></children></atrchave><lcaf id="a2"><points><p colinear="true" x="657.3549623842592" y="516" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="670.3276728877315" y="526.5" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="a3"><Owner><atrchave ref="90"/></Owner></rConnector></startConnector><endConnector><rConnector id="a4"><Owner><ent ref="f"/></Owner></rConnector></endConnector></lcaf><lcaf id="a5"><points><p colinear="true" x="497.02949852507373" y="756" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="551.9410029498525" y="701.25" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="a6"><Owner><atrchave ref="9f"/></Owner></rConnector></startConnector><endConnector><rConnector id="a7"><Owner><ent ref="c"/></Owner></rConnector></endConnector></lcaf><lcaf id="a8"><points><p colinear="true" x="1090.857142857143" y="504" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="1124.2857142857142" y="530" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="a9"><Owner><atrchave ref="9c"/></Owner></rConnector></startConnector><endConnector><rConnector id="aa"><Owner><ent ref="6"/></Owner></rConnector></endConnector></lcaf><lcaf id="ab"><points><p colinear="true" x="366.0993258568549" y="509" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="438.5" y="522.52673521397" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="ac"><Owner><atrchave ref="93"/></Owner></rConnector></startConnector><endConnector><rConnector id="ad"><Owner><ent ref="24"/></Owner></rConnector></endConnector></lcaf><lcaf id="ae"><points><p colinear="true" x="750.446015625" y="139" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="716.14556640625" y="171.5" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="af"><Owner><atrchave ref="8d"/></Owner></rConnector></startConnector><endConnector><rConnector id="b0"><Owner><ent ref="0"/></Owner></rConnector></endConnector></lcaf><lcaf id="b1"><points><p colinear="true" x="239.02205882352942" y="150.5" c1x="-896" c1y="-2" c2x="-896" c2y="-2"/><p colinear="true" x="184.8125" y="174.092" c1x="-896" c1y="-2" c2x="-896" c2y="-2"/></points><startConnector><rConnector id="b2"><Owner><atrchave ref="96"/></Owner></rConnector></startConnector><endConnector><rConnector id="b3"><Owner><ent ref="12"/></Owner></rConnector></endConnector></lcaf><lcaf id="b4"><points><p colinear="true" x="1088.842105263158" y="368" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="1110" y="358.31325301204816" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="b5"><Owner><atrchave ref="99"/></Owner></rConnector></startConnector><endConnector><rConnector id="b6"><Owner><ent ref="3"/></Owner></rConnector></endConnector></lcaf><atrchave id="b7" nullable="false" attributeType="NUMBER"><children><e id="b8" x="650" y="764" w="112.1328125" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="b9" x="660" y="766.7080078125"><a><fontUnderlined><boolean>true</boolean></fontUnderlined><fontBold><boolean>true</boolean></fontBold><text><string>pro_forma_id</string></text></a></t></children></atrchave><lcaf id="ba"><points><p colinear="true" x="739.6988959194215" y="764" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="806" y="744.2865905164139" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="bb"><Owner><atrchave ref="b7"/></Owner></rConnector></startConnector><endConnector><rConnector id="bc"><Owner><ent ref="9"/></Owner></rConnector></endConnector></lcaf><lcaf id="bd"><points><p colinear="true" x="714.7208865676796" y="111" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="699.9278557708909" y="171.5" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="be"><Owner><atr ref="7b"/></Owner></rConnector></startConnector><endConnector><rConnector id="bf"><Owner><ent ref="0"/></Owner></rConnector></endConnector></lcaf><lcaf id="c0"><points><p colinear="true" x="598.9378560946133" y="111" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="671.1618854670235" y="171.5" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="c1"><Owner><atr ref="78"/></Owner></rConnector></startConnector><endConnector><rConnector id="c2"><Owner><ent ref="0"/></Owner></rConnector></endConnector></lcaf><lcaf id="c3"><points><p colinear="true" x="879.2328683035714" y="114" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="735.03759765625" y="174.67003477284948" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="c4"><Owner><atr ref="8a"/></Owner></rConnector></startConnector><endConnector><rConnector id="c5"><Owner><ent ref="0"/></Owner></rConnector></endConnector></lcaf><lcaf id="c6"><points><p colinear="true" x="548.846015625" y="139" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="655.03759765625" y="177.1352878132812" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="c7"><Owner><atr ref="87"/></Owner></rConnector></startConnector><endConnector><rConnector id="c8"><Owner><ent ref="0"/></Owner></rConnector></endConnector></lcaf><lcaf id="c9"><points><p colinear="true" x="630" y="345.71653565269133" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="655.03759765625" y="341.78346434730867" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="ca"><Owner><atr ref="81"/></Owner></rConnector></startConnector><endConnector><rConnector id="cb"><Owner><ent ref="18"/></Owner></rConnector></endConnector></lcaf><lcaf id="cc"><points><p colinear="true" x="588.1500186011905" y="378" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="655.03759765625" y="351.40456080144077" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="cd"><Owner><atr ref="84"/></Owner></rConnector></startConnector><endConnector><rConnector id="ce"><Owner><ent ref="18"/></Owner></rConnector></endConnector></lcaf><lcaf id="cf"><points><p colinear="true" x="156.82107843137254" y="150.5" c1x="-896" c1y="-2" c2x="-896" c2y="-2"/><p colinear="true" x="150.67034313725492" y="171.5" c1x="-896" c1y="-2" c2x="-896" c2y="-2"/></points><startConnector><rConnector id="d0"><Owner><atr ref="7e"/></Owner></rConnector></startConnector><endConnector><rConnector id="d1"><Owner><ent ref="12"/></Owner></rConnector></endConnector></lcaf><atr id="d2" nullable="false" attributeType="VARCHAR2(128)"><children><e id="d3" x="1238" y="330" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="d4" x="1238.75390625" y="332.7080078125"><a><text><string>carry_weight</string></text></a></t></children></atr><atr id="d5" nullable="false" attributeType="VARCHAR2(128)"><children><e id="d6" x="472" y="803" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="d7" x="495.189453125" y="805.7080078125"><a><text><string>name</string></text></a></t></children></atr><atr id="d8" nullable="false" attributeType="VARCHAR2(128)"><children><e id="d9" x="351" y="771" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="da" x="372.6015625" y="773.7080078125"><a><text><string>image</string></text></a></t></children></atr><atr id="db" nullable="false" attributeType="VARCHAR2(128)"><children><e id="dc" x="531" y="781" w="104.732421875" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="dd" x="541" y="783.7080078125"><a><text><string>article_weight</string></text></a></t></children></atr><atr id="de" nullable="false" attributeType="VARCHAR2(128)"><children><e id="df" x="547" y="523" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="e0" x="548.7294921875" y="525.7080078125"><a><text><string>order_status</string></text></a></t></children></atr><atr id="e1" nullable="false" attributeType="VARCHAR2(128)"><children><e id="e2" x="711" y="493" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="e3" x="711.3642578125" y="495.7080078125"><a><text><string>date_created</string></text></a></t></children></atr><atr id="e4" nullable="false" attributeType="VARCHAR2(128)"><children><e id="e5" x="793" y="777" w="127.40234375" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="e6" x="803" y="779.7080078125"><a><text><string>pro_forma_status</string></text></a></t></children></atr><atr id="e7" nullable="false" attributeType="VARCHAR2(128)"><children><e id="e8" x="950" y="763" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="e9" x="950.3642578125" y="765.7080078125"><a><text><string>date_created</string></text></a></t></children></atr><atr id="ea" nullable="false" attributeType="VARCHAR2(128)"><children><e id="eb" x="971" y="712" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="ec" x="985.681640625" y="714.7080078125"><a><text><string>deadline</string></text></a></t></children></atr><atr id="ed" nullable="false" attributeType="VARCHAR2(128)"><children><e id="ee" x="1195" y="604" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="ef" x="1195.3642578125" y="606.7080078125"><a><text><string>date_created</string></text></a></t></children></atr><ent id="f0"><children><r id="f1" x="281" y="661.25" w="80" h="40"><a><fillColor><color rgba="#ffebffe8"/></fillColor></a></r><t id="f2" x="287.9794921875" y="673.9580078125"><a><text><string>CATEGORY</string></text></a></t></children></ent><atrchave id="f3" nullable="false" attributeType="NUMBER"><children><e id="f4" x="175" y="680" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="f5" x="194.216796875" y="682.7080078125"><a><fontUnderlined><boolean>true</boolean></fontUnderlined><fontBold><boolean>true</boolean></fontBold><text><string>cat_id</string></text></a></t></children></atrchave><atr id="f6" nullable="false" attributeType="VARCHAR2(128)"><children><e id="f7" x="181" y="636" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="f8" x="204.189453125" y="638.7080078125"><a><text><string>name</string></text></a></t></children></atr><lcaf id="f9"><points><p colinear="true" x="249.36879432624113" y="656" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="281" y="667.15" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="fa"><Owner><atr ref="f6"/></Owner></rConnector></startConnector><endConnector><rConnector id="fb"><Owner><ent ref="f0"/></Owner></rConnector></endConnector></lcaf><lcaf id="fc"><points><p colinear="true" x="255" y="686.6981132075472" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="281" y="684.5518867924528" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="fd"><Owner><atrchave ref="f3"/></Owner></rConnector></startConnector><endConnector><rConnector id="fe"><Owner><ent ref="f0"/></Owner></rConnector></endConnector></lcaf><lcaf id="ff"><points><p colinear="true" x="516.5540796963946" y="803" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="562.8918406072106" y="701.25" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="100"><Owner><atr ref="d5"/></Owner></rConnector></startConnector><endConnector><rConnector id="101"><Owner><ent ref="c"/></Owner></rConnector></endConnector></lcaf><lcaf id="102"><points><p colinear="true" x="409.1453634085213" y="771" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="535.7092731829574" y="701.25" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="103"><Owner><atr ref="d8"/></Owner></rConnector></startConnector><endConnector><rConnector id="104"><Owner><ent ref="c"/></Owner></rConnector></endConnector></lcaf><lcaf id="105"><points><p colinear="true" x="582.330565293992" y="781" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="574.0712912870159" y="701.25" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="106"><Owner><atr ref="db"/></Owner></rConnector></startConnector><endConnector><rConnector id="107"><Owner><ent ref="c"/></Owner></rConnector></endConnector></lcaf><rel id="108"><children><diamond id="109" x="396" y="661.25" w="108.2421875" h="40"><a><fillColor><color rgba="#ffddddff"/></fillColor></a></diamond><t id="10a" x="406" y="673.9580078125"><a><text><string>from_category</string></text></a></t></children></rel><llabelDoubleMuitos id="10b"><points><p colinear="true" x="504.2421875" y="681.25" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="532" y="681.25" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="10c"><Owner><rel ref="108"/></Owner></rConnector></startConnector><endConnector><rConnector id="10d"><Owner><ent ref="c"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor><text><string>M</string></text></a></llabelDoubleMuitos><llabelUm id="10e"><points><p colinear="true" x="396" y="681.25" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="361" y="681.25" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="10f"><Owner><rel ref="108"/></Owner></rConnector></startConnector><endConnector><rConnector id="110"><Owner><ent ref="f0"/></Owner></rConnector></endConnector></llabelUm><lcaf id="111"><points><p colinear="true" x="627" y="537.9982599735155" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="655.03759765625" y="541.5017400264845" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="112"><Owner><atr ref="de"/></Owner></rConnector></startConnector><endConnector><rConnector id="113"><Owner><ent ref="f"/></Owner></rConnector></endConnector></lcaf><lcaf id="114"><points><p colinear="true" x="738.135079920977" y="513" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="720.7674378142959" y="526.5" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="115"><Owner><atr ref="e1"/></Owner></rConnector></startConnector><endConnector><rConnector id="116"><Owner><ent ref="f"/></Owner></rConnector></endConnector></lcaf><lcaf id="117"><points><p colinear="true" x="1221.71875" y="604" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="1176.5625" y="570" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="118"><Owner><atr ref="ed"/></Owner></rConnector></startConnector><endConnector><rConnector id="119"><Owner><ent ref="6"/></Owner></rConnector></endConnector></lcaf><lcaf id="11a"><points><p colinear="true" x="1238" y="340" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="1190" y="340" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="11b"><Owner><atr ref="d2"/></Owner></rConnector></startConnector><endConnector><rConnector id="11c"><Owner><ent ref="3"/></Owner></rConnector></endConnector></lcaf><lcaf id="11d"><points><p colinear="true" x="971" y="723.7396879127078" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="911.34765625" y="726.3340994473722" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="11e"><Owner><atr ref="ea"/></Owner></rConnector></startConnector><endConnector><rConnector id="11f"><Owner><ent ref="9"/></Owner></rConnector></endConnector></lcaf><lcaf id="120"><points><p colinear="true" x="960.4053697183099" y="763" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="911.34765625" y="746.4234410089383" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="121"><Owner><atr ref="e7"/></Owner></rConnector></startConnector><endConnector><rConnector id="122"><Owner><ent ref="9"/></Owner></rConnector></endConnector></lcaf><lcaf id="123"><points><p colinear="true" x="857.0391001405246" y="777" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="857.9979715939508" y="748.625" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="124"><Owner><atr ref="e4"/></Owner></rConnector></startConnector><endConnector><rConnector id="125"><Owner><ent ref="9"/></Owner></rConnector></endConnector></lcaf><atr id="126" nullable="false" attributeType="VARCHAR2(128)"><children><e id="127" x="1052" y="605" w="112.07421875" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="128" x="1062" y="607.7080078125"><a><text><string>delivery_status</string></text></a></t></children></atr><lcaf id="129"><points><p colinear="true" x="1137.0883413461538" y="570" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="1114.492938701923" y="605" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="12a"><Owner><ent ref="6"/></Owner></rConnector></startConnector><endConnector><rConnector id="12b"><Owner><atr ref="126"/></Owner></rConnector></endConnector></lcaf><atr id="12c" nullable="false" attributeType="VARCHAR2(128)"><children><e id="12d" x="745" y="364" w="115.8359375" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="12e" x="755" y="366.7080078125"><a><text><string>company_name</string></text></a></t></children></atr><lcaf id="12f"><points><p colinear="true" x="735.03759765625" y="349.77507139979815" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="774.8970931412338" y="364" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="130"><Owner><ent ref="18"/></Owner></rConnector></startConnector><endConnector><rConnector id="131"><Owner><atr ref="12c"/></Owner></rConnector></endConnector></lcaf><atr id="132" nullable="false" attributeType="VARCHAR2(128)"><children><e id="133" x="535" y="412" w="109.162109375" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="134" x="545" y="414.7080078125"><a><text><string>working_hours</string></text></a></t></children></atr><lcaf id="135"><points><p colinear="true" x="601.772562545159" y="412" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="670.6545819409321" y="355.5" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="136"><Owner><atr ref="132"/></Owner></rConnector></startConnector><endConnector><rConnector id="137"><Owner><ent ref="18"/></Owner></rConnector></endConnector></lcaf><rel id="138"><children><diamond id="139" x="90" y="510" w="109.625" h="40"><a><fillColor><color rgba="#ffddddff"/></fillColor></a></diamond><t id="13a" x="100" y="522.7080078125"><a><text><string>warehouse_loc</string></text></a></t></children></rel><atr id="13b" nullable="false" attributeType="VARCHAR2(128)"><children><e id="13c" x="356" y="458" w="111.453125" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="13d" x="366" y="460.7080078125"><a><text><string>wareh_address</string></text></a></t></children></atr><lcaf id="13e"><points><p colinear="true" x="422.49647177419354" y="478" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="456.9601814516129" y="510" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="13f"><Owner><atr ref="13b"/></Owner></rConnector></startConnector><endConnector><rConnector id="140"><Owner><ent ref="24"/></Owner></rConnector></endConnector></lcaf><atr id="141" nullable="false" attributeType="VARCHAR2(128)"><children><e id="142" x="703" y="396" w="137.287109375" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="143" x="713" y="398.7080078125"><a><text><string>representative_img</string></text></a></t></children></atr><lcaf id="144"><points><p colinear="true" x="716.7697840480939" y="355.5" c1x="-19.769784048093925" c1y="2.5" c2x="-19.769784048093925" c2y="2.5"/><p colinear="true" x="760.777461491578" y="396" c1x="-19.769784048093925" c1y="2.5" c2x="-19.769784048093925" c2y="2.5"/></points><startConnector><rConnector id="145"><Owner><ent ref="18"/></Owner></rConnector></startConnector><endConnector><rConnector id="146"><Owner><atr ref="141"/></Owner></rConnector></endConnector></lcaf><llabelDoubleMuitos id="147"><points><p colinear="true" x="1150" y="470" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="1150" y="530" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="148"><Owner><rel ref="57"/></Owner></rConnector></startConnector><endConnector><rConnector id="149"><Owner><ent ref="6"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor><text><string>M</string></text></a></llabelDoubleMuitos><llabelDoubleMuitos id="14a"><points><p colinear="true" x="199.625" y="530" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="438.5" y="530" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="14b"><Owner><rel ref="138"/></Owner></rConnector></startConnector><endConnector><rConnector id="14c"><Owner><ent ref="24"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor><text><string>N</string></text></a></llabelDoubleMuitos><llabelMuitos id="14d"><points><p colinear="true" x="144.8125" y="510" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="144.8125" y="211.5" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="14e"><Owner><rel ref="138"/></Owner></rConnector></startConnector><endConnector><rConnector id="14f"><Owner><ent ref="12"/></Owner></rConnector></endConnector><a><text><string>M</string></text></a></llabelMuitos><rel id="150"><children><diamond id="151" x="100" y="580" w="80" h="40"><a><fillColor><color rgba="#ffddddff"/></fillColor></a></diamond><t id="152" x="106.91796875" y="592.7080078125"><a><text><string>belongs_to</string></text></a></t></children></rel><llabelUm id="153"><points><p colinear="true" x="180" y="600" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="350" y="600"/><p colinear="true" x="441.7857142857143" y="550" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="154"><Owner><rel ref="150"/></Owner></rConnector></startConnector><endConnector><rConnector id="155"><Owner><ent ref="24"/></Owner></rConnector></endConnector></llabelUm><llabelDoubleMuitos id="156"><points><p colinear="true" x="100" y="600" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="40" y="600"/><p colinear="true" x="36" y="50"/><p colinear="true" x="1150" y="50"/><p colinear="true" x="1150" y="320" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="157"><Owner><rel ref="150"/></Owner></rConnector></startConnector><endConnector><rConnector id="158"><Owner><ent ref="3"/></Owner></rConnector></endConnector><a><innerStrokeWidthFactor><double>3</double></innerStrokeWidthFactor><text><string>N</string></text></a></llabelDoubleMuitos><generalizacaoLine id="159"><points><p colinear="true" x="685.03759765625" y="272.76034321346305" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="518.5" y="323.34925214614776" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="15a"><Owner><disjuncao ref="1e"/></Owner></rConnector></startConnector><endConnector><rConnector id="15b"><Owner><ent ref="15"/></Owner></rConnector></endConnector></generalizacaoLine><generalizacaoLine id="15c"><points><p colinear="true" x="705.03759765625" y="272.9476302155028" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="859" y="322.6001041379888" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="15d"><Owner><disjuncao ref="1e"/></Owner></rConnector></startConnector><endConnector><rConnector id="15e"><Owner><ent ref="1b"/></Owner></rConnector></endConnector></generalizacaoLine><atr id="15f" nullable="false" attributeType="VARCHAR2(128)"><children><e id="160" x="526" y="578" w="80" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="161" x="541.138671875" y="580.7080078125"><a><text><string>quantity</string></text></a></t></children></atr><lcaf id="162"><points><p colinear="true" x="518.5" y="601.9785714285714" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="532.0194174757281" y="598" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="163"><Owner><rel ref="51"/></Owner></rConnector></startConnector><endConnector><rConnector id="164"><Owner><atr ref="15f"/></Owner></rConnector></endConnector></lcaf><atr id="165" nullable="false" attributeType="VARCHAR2(128)"><children><e id="166" x="660" y="680" w="109.501953125" h="20"><a><fillColor><color rgba="#ffffebeb"/></fillColor></a></e><t id="167" x="670" y="682.7080078125"><a><text><string>order_quantity</string></text></a></t></children></atr><lcaf id="168"><points><p colinear="true" x="701.6500517967112" y="650.375" c1x="0" c1y="0" c2x="0" c2y="0"/><p colinear="true" x="711.4447494922694" y="680" c1x="0" c1y="0" c2x="0" c2y="0"/></points><startConnector><rConnector id="169"><Owner><rel ref="4b"/></Owner></rConnector></startConnector><endConnector><rConnector id="16a"><Owner><atr ref="165"/></Owner></rConnector></endConnector></lcaf></figures></drawing>
Index: backend/pom.xml
===================================================================
--- backend/pom.xml	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/pom.xml	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -6,5 +6,5 @@
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>3.3.5</version>
+        <version>3.4.2</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
@@ -41,4 +41,9 @@
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
         </dependency>
 
@@ -86,4 +91,8 @@
             <artifactId>spring-boot-starter-mail</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
 
     </dependencies>
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/DistributorAppApplication.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/DistributorAppApplication.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/DistributorAppApplication.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -3,6 +3,8 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
 
 @SpringBootApplication
+@ServletComponentScan
 public class DistributorAppApplication {
 
@@ -11,5 +13,3 @@
     }
 
-
-
 }
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/config/CustomUserDetailsService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/config/CustomUserDetailsService.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,33 +1,0 @@
-package mk.ukim.finki.db.distributorapp.config;
-
-import mk.ukim.finki.db.distributorapp.model.entities.Users;
-import mk.ukim.finki.db.distributorapp.repository.UsersRepository;
-import mk.ukim.finki.db.distributorapp.security.PassEncryptionPasswordEncoder;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.security.core.userdetails.UserDetailsService;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.stereotype.Service;
-
-@Service
-public class CustomUserDetailsService implements UserDetailsService {
-
-    private final UsersRepository usersRepository;
-    private final PassEncryptionPasswordEncoder passwordEncoder;
-
-    public CustomUserDetailsService(UsersRepository usersRepository, PassEncryptionPasswordEncoder passwordEncoder) {
-        this.usersRepository = usersRepository;
-        this.passwordEncoder = passwordEncoder;
-    }
-
-    @Override
-    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
-        Users user = this.usersRepository.findUserByUserEmailIgnoreCase(username)
-                .orElseThrow(() -> new UsernameNotFoundException(username));
-
-        return user;
-    }
-
-    public boolean authenticateUser(String providedPassword, Users user) {
-        return passwordEncoder.matchesWithSalt(providedPassword, user.getPassword(), user.getUserSalt());
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/config/SecurityConfig.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/config/SecurityConfig.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,88 +1,0 @@
-package mk.ukim.finki.db.distributorapp.config;
-
-import mk.ukim.finki.db.distributorapp.security.PassEncryptionPasswordEncoder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.security.web.SecurityFilterChain;
-
-@Configuration
-@EnableWebSecurity
-public class SecurityConfig {
-
-    private final CustomUserDetailsService userDetailsService;
-
-    public SecurityConfig(CustomUserDetailsService userDetailsService) {
-        this.userDetailsService = userDetailsService;
-    }
-
-    // FOR TESTING:
-    @Bean
-    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
-        http
-                .csrf(AbstractHttpConfigurer::disable)
-                .authorizeHttpRequests(auth -> auth
-                        .anyRequest().permitAll()
-                )
-                .formLogin(AbstractHttpConfigurer::disable)
-                .logout(AbstractHttpConfigurer::disable);
-
-        return http.build();
-    }
-
-
-    // FOR PRODUCTION:
-
-    /**
-     * @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
-     * //        http
-     * //                .authorizeHttpRequests(authorize -> authorize
-     * //                        .requestMatchers("/login","/register").permitAll()
-     * //                        .anyRequest().authenticated()
-     * //                )
-     * //                .formLogin(form -> form
-     * //                        .loginPage("/login")
-     * //                        .permitAll()
-     * //                )
-     * //                .logout(LogoutConfigurer::permitAll);
-     * <p>
-     * http
-     * .csrf(AbstractHttpConfigurer::disable)
-     * .authorizeHttpRequests(auth -> auth
-     * .requestMatchers("/register", "/login", "/css/**", "/js/**").permitAll()
-     * .requestMatchers("/manager/**").hasAuthority("Manager")
-     * .requestMatchers("/driver/**").hasAuthority("Driver")
-     * .requestMatchers("/customer/**").hasAuthority("Customer")
-     * .anyRequest().authenticated()
-     * )
-     * .formLogin(login -> login
-     * .loginPage("/login")
-     * .defaultSuccessUrl("/home", true)
-     * .permitAll()
-     * )
-     * .logout(logout -> logout
-     * .logoutUrl("/logout")
-     * .logoutSuccessUrl("/login")
-     * .permitAll()
-     * );
-     * <p>
-     * return http.build();
-     * }
-     **/
-
-
-    @Bean
-    public AuthenticationManager authManager(AuthenticationConfiguration authConfig) throws Exception {
-        return authConfig.getAuthenticationManager();
-    }
-
-    @Bean
-    public PasswordEncoder passwordEncoder() {
-        return new PassEncryptionPasswordEncoder();
-    }
-}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ChangePasswordDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ChangePasswordDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ChangePasswordDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,14 @@
+package mk.ukim.finki.db.distributorapp.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ChangePasswordDto {
+    String email;
+    String oldPassword;
+    String newPassword;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CityDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CityDto.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CityDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -7,6 +7,7 @@
 @Data
 @AllArgsConstructor
+@NoArgsConstructor
 public class CityDto {
-    private Long id;
+    private Integer id;
     private String name;
     private Integer regionId;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CityDtoRegister.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CityDtoRegister.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CityDtoRegister.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,11 @@
+package mk.ukim.finki.db.distributorapp.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class CityDtoRegister {
+    private Integer id;
+    private String name;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CreateDriverDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CreateDriverDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CreateDriverDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,20 @@
+package mk.ukim.finki.db.distributorapp.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CreateDriverDto {
+    private String name;
+    private String surname;
+    private String password;
+    private String repeatedPassword;
+    private String email;
+    private String mobile;
+    private String profileImage;
+    private Integer city;
+    private Integer vehicle;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CreateManagerDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CreateManagerDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CreateManagerDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,20 @@
+package mk.ukim.finki.db.distributorapp.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CreateManagerDto {
+    private String name;
+    private String surname;
+    private String password;
+    private String repeatedPassword;
+    private String email;
+    private String mobile;
+    private String profileImage;
+    private Integer city;
+    private Integer warehouseId;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DriverDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DriverDto.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DriverDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -3,7 +3,9 @@
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 @Data
 @AllArgsConstructor
+@NoArgsConstructor
 public class DriverDto {
     private Long id;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/LoginRequestDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/LoginRequestDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/LoginRequestDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,13 @@
+package mk.ukim.finki.db.distributorapp.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class LoginRequestDto {
+    private String email;
+    private String password;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/LoginResponseDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/LoginResponseDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/LoginResponseDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class LoginResponseDto {
+    private String token;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ManagerDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ManagerDto.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ManagerDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -3,7 +3,9 @@
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 @Data
 @AllArgsConstructor
+@NoArgsConstructor
 public class ManagerDto {
     private Long id;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/RegisterRequestDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/RegisterRequestDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/RegisterRequestDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,23 @@
+package mk.ukim.finki.db.distributorapp.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class RegisterRequestDto {
+    private String name;
+    private String surname;
+    private String password;
+    private String repeatedPassword;
+    private String email;
+    private String mobile;
+    private String profileImage;
+    private Integer city;
+    private String edb;
+    private String compName;
+    private String address;
+    private String repImage;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/UserDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/UserDto.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/UserDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -3,7 +3,12 @@
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import mk.ukim.finki.db.distributorapp.model.enumerations.Role;
+
+import java.time.LocalDateTime;
 
 @Data
 @AllArgsConstructor
+@NoArgsConstructor
 public class UserDto {
     private Long id;
@@ -13,6 +18,10 @@
     private String phone;
     private String image;
-    private Long cityId;
+    private Integer cityId;
     private String cityName;
     private String regionName;
+    private Role role;
+    private String rtoken;
+    private LocalDateTime rtoken_exp;
+    private String clazz_;
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/VehicleBasicDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/VehicleBasicDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/VehicleBasicDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class VehicleBasicDto {
+    private Integer id;
+    private Integer warehouseId;
+    private String plateNumber;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/WarehouseDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/WarehouseDto.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/WarehouseDto.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -3,11 +3,13 @@
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 @Data
 @AllArgsConstructor
+@NoArgsConstructor
 public class WarehouseDto {
     private Integer id;
     private String address;
-    private Long cityId;
+    private Integer cityId;
     private String cityName;
     private Integer regionId;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Article.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Article.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Article.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -3,4 +3,6 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 
@@ -16,18 +18,25 @@
     private Long articleId;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "art_name", nullable = false)
     private String articleName;
 
+    @NotNull
     @Column(name = "art_weight", nullable = false)
     private Integer articleWeight;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "art_image", nullable = false)
     private String artImage;
 
-    @ManyToOne
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY,optional = false)
     @JoinColumn(name = "ctg_id", nullable = false)
     private Category category;
 
-    @ManyToOne
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
     @JoinColumn(name = "man_id", nullable = false)
     private Manufacturer manufacturer;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ArticleUnit.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ArticleUnit.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ArticleUnit.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,7 +2,11 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.LinkedHashSet;
+import java.util.Set;
 
 @Entity
@@ -14,24 +18,33 @@
     private Long unitId;
 
+    @NotNull
     @Column(name = "unit_expiration_date", nullable = false)
     private Date unitExpirationDate;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "unit_serial_number", nullable = false)
     private String unitSerialNumber;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "unit_batch_number", nullable = false)
     private String unitBatchNumber;
 
+    @NotNull
     @Column(name = "unit_manufacture_date", nullable = false)
     private Date unitManufactureDate;
 
+    @NotNull
     @Column(name = "unit_cost_price", nullable = false)
     private Double unitCostPrice;
 
-    @ManyToOne
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
     @JoinColumn(name = "art_id", nullable = false)
     private Article article;
 
-    @ManyToOne(fetch = FetchType.LAZY)
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
     @JoinColumn(name = "wh_id",nullable = false)
     private Warehouse warehouse;
@@ -40,3 +53,11 @@
     @JoinColumn(name = "ord_id")
     private Orders order;
+
+    @ManyToMany
+    @JoinTable(
+            name="unit_price",
+            joinColumns = @JoinColumn(name="unit_id"),
+            inverseJoinColumns = @JoinColumn(name="price_id")
+    )
+    private Set<Price> prices = new LinkedHashSet<>();
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Category.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Category.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Category.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,6 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 
@@ -15,4 +17,6 @@
     private Long categoryId;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "ctg_name", nullable = false)
     private String categoryName;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/City.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/City.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/City.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,6 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 
@@ -13,6 +15,8 @@
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     @Column(name = "city_id")
-    private Long cityId;
+    private Integer cityId;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "city_name", nullable = false)
     private String cityName;
@@ -24,4 +28,5 @@
     private Warehouse warehouse;
 
+    @NotNull
     @ManyToOne(fetch = FetchType.LAZY, optional = false)
     @JoinColumn(name = "region_id", nullable = false)
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Customer.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Customer.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Customer.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,6 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -11,19 +13,31 @@
 @Data
 @Table(name = "customer")
-@DiscriminatorValue(value = "Customer")
+@DiscriminatorValue("CUSTOMER")
+@PrimaryKeyJoinColumn(name = "user_id")
 public class Customer extends Users {
+    @Size(max = 13)
+    @NotNull
     @Column(name = "cust_EDB", nullable = false, length = 13)
     private String customerEDB;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "cust_company_name", nullable = false)
     private String customerCompanyName;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "cust_adr", nullable = false)
     private String customerAddress;
 
-    @Column(name = "cust_representative_img", nullable = false)
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "cust_representative_img")
     private String customerRepresentativeImage;
 
-    @OneToMany(mappedBy = "customer")
+    @OneToMany(mappedBy = "customer", fetch = FetchType.EAGER)
     private List<Orders> orders;
+
+    @OneToMany(mappedBy = "customer", fetch = FetchType.EAGER)
+    private List<CustomerWeekday> customerWeekdays;
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/CustomerWeekday.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/CustomerWeekday.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/CustomerWeekday.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,5 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
@@ -17,15 +18,19 @@
     private Long customerDayId;
 
+    @NotNull
     @ManyToOne(fetch = FetchType.LAZY, optional = false)
     @JoinColumn(name = "cust_id", nullable = false)
     private Customer customer;
 
+    @NotNull
     @ManyToOne(fetch = FetchType.LAZY, optional = false)
     @JoinColumn(name = "day_id", nullable = false)
     private Weekday day;
 
+    @NotNull
     @Column(name = "start_time", nullable = false)
     private LocalTime customerDayStartTime;
 
+    @NotNull
     @Column(name = "end_time", nullable = false)
     private LocalTime customerDayEndTime;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Delivery.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Delivery.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Delivery.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,5 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
@@ -17,7 +18,9 @@
     private Long deliveryId;
 
+    @NotNull
     @Column(name = "del_date_created", nullable = false)
     private LocalDate deliveryDateCreated;
 
+    @NotNull
     @Column(name = "del_date", nullable = false)
     private LocalDate deliveryDate;
@@ -35,9 +38,11 @@
     private LocalTime deliveryEndTime;
 
-    @ManyToOne
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
     @JoinColumn(name = "d_status_id", nullable = false)
     private DeliveryStatus deliveryStatus;
 
-    @ManyToOne
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
     @JoinColumn(name = "veh_id", nullable = false)
     private Vehicle vehicle;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/DeliveryStatus.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/DeliveryStatus.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/DeliveryStatus.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,6 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 
@@ -8,4 +10,5 @@
 @Entity
 @Data
+@Table(name = "delivery_status")
 public class DeliveryStatus {
     @Id
@@ -14,7 +17,10 @@
     private Short deliveryStatusId;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "d_status_name", nullable = false)
     private String deliveryStatusName;
 
+    @NotNull
     @Column(name = "d_status_desc", nullable = false)
     private String deliveryStatusDescription;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Driver.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Driver.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Driver.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,5 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -9,6 +10,8 @@
 @Data
 @Table(name = "driver")
-@DiscriminatorValue(value = "Driver")
+@DiscriminatorValue("DRIVER")
+@PrimaryKeyJoinColumn(name = "user_id")
 public class Driver extends Users {
+    @NotNull
     @OneToOne
     @JoinColumn(name = "veh_id", nullable = false)
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Manager.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Manager.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Manager.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,5 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -9,6 +10,8 @@
 @Data
 @Table(name = "manager")
-@DiscriminatorValue(value = "Manager")
+@DiscriminatorValue("MANAGER")
+@PrimaryKeyJoinColumn(name = "user_id")
 public class Manager extends Users {
+    @NotNull
     @OneToOne
     @JoinColumn(name = "wh_id", nullable = false, unique = true)
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Manufacturer.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Manufacturer.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Manufacturer.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,6 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 
@@ -15,13 +17,21 @@
     private Long manufacturerId;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "man_name", nullable = false)
     private String manufacturerName;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "man_adr", nullable = false)
     private String manufacturerAddress;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "man_mobile", nullable = false)
     private String manufacturerMobile;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "man_email", nullable = false)
     private String manufacturerEmail;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/OrderStatus.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/OrderStatus.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/OrderStatus.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,6 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 
@@ -8,4 +10,5 @@
 @Entity
 @Data
+@Table(name="order_status", schema = "IND0_185022")
 public class OrderStatus {
     @Id
@@ -14,7 +17,10 @@
     private Short orderStatusId;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "o_status_name", nullable = false)
     private String orderStatusName;
 
+    @NotNull
     @Column(name = "o_status_desc", nullable = false)
     private String orderStatusDescription;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Orders.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Orders.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Orders.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,5 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
@@ -17,7 +18,9 @@
     private Long orderId;
 
+    @NotNull
     @Column(name = "ord_date", nullable = false)
     private LocalDate orderDate;
 
+    @NotNull
     @Column(name = "ord_sum", nullable = false)
     private Integer orderSum;
@@ -29,13 +32,15 @@
     private String orderComment;
 
-    @ManyToOne
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
     @JoinColumn(name = "o_status_id", nullable = false)
     private OrderStatus orderStatus;
 
-    @ManyToOne
-    @JoinColumn(name = "cust_id")
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "cust_id", nullable = false)
     private Customer customer;
 
-    @ManyToOne
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
     @JoinColumn(name = "del_id", nullable = false)
     private Delivery delivery;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Price.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Price.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Price.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,8 +2,12 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
+import org.hibernate.annotations.ColumnDefault;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.LinkedHashSet;
+import java.util.Set;
 
 @Entity
@@ -16,13 +20,22 @@
     private Integer priceId;
 
+    @NotNull
     @Column(name = "price", nullable = false)
     private BigDecimal price;
 
+    @NotNull
+    @ColumnDefault("CURRENT_TIMESTAMP")
     @Column(name = "price_eff_date", nullable = false)
     private LocalDateTime priceEffectiveDate;
 
-    @ManyToOne
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
     @JoinColumn(name = "art_id", nullable = false)
     private Article article;
 
+    @ManyToMany
+    @JoinTable(name = "unit_price",
+            joinColumns = @JoinColumn(name = "price_id"),
+            inverseJoinColumns = @JoinColumn(name = "unit_id"))
+    private Set<ArticleUnit> articleUnits = new LinkedHashSet<>();
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ProForma.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ProForma.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ProForma.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,5 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
@@ -15,11 +16,14 @@
     private Long proFormaId;
 
+    @NotNull
     @Column(name = "pf_deadline", nullable = false)
     private LocalDate proFormaDeadline;
 
+    @NotNull
     @Column(name = "pf_date_created", nullable = false)
     private LocalDate proFormaDateCreated;
 
-    @ManyToOne
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
     @JoinColumn(name = "pf_status_id", nullable = false)
     private ProFormaStatus proFormaStatus;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ProFormaStatus.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ProFormaStatus.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ProFormaStatus.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,6 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 
@@ -8,4 +10,5 @@
 @Entity
 @Data
+@Table(name = "pro_forma_status", schema = "IND0_185022")
 public class ProFormaStatus {
     @Id
@@ -14,7 +17,10 @@
     private Short proFormaStatusId;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "pf_status_name", nullable = false)
     private String proFormaStatusName;
 
+    @NotNull
     @Column(name = "pf_status_desc", nullable = false)
     private String proFormaStatusDescription;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Region.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Region.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Region.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,6 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 
@@ -15,4 +17,6 @@
     private Integer regionId;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "region_name", nullable = false)
     private String regionName;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Users.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Users.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Users.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,11 +2,17 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import mk.ukim.finki.db.distributorapp.model.enumerations.Role;
+import mk.ukim.finki.db.distributorapp.security.ConfirmationToken;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
 
+import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -16,38 +22,75 @@
 @NoArgsConstructor
 @Inheritance(strategy = InheritanceType.JOINED)
+@DiscriminatorColumn(
+        name = "clazz_",
+        discriminatorType = DiscriminatorType.STRING
+)
 @Data
 @Table(name = "users")
-public class Users implements UserDetails {
+public class Users implements UserDetails{
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "user_id")
     private Long userId;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "user_name", nullable = false)
     private String userName;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "user_surname", nullable = false)
     private String userSurname;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "user_pass", nullable = false)
     private String userPassword;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "user_email", nullable = false)
     private String userEmail;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "user_mobile", nullable = false)
     private String userMobile;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "user_salt", nullable = false)
     private String userSalt;
 
+    @NotNull
     @Column(name = "user_active", nullable = false)
     private Boolean userActive;
 
+    @Size(max = 255)
     @Column(name = "user_image")
     private String userImage;
 
-    @ManyToOne
+    @Enumerated(EnumType.STRING)
+    @Column(name = "user_role")
+    private Role userRole;
+
+    @Size(max = 255)
+    @Column(name = "user_rtoken")
+    private String userResetToken;
+
+    @Column(name = "user_rtoken_exp")
+    private LocalDateTime userResetTokenExpiry;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
     @JoinColumn(name = "city_id", nullable = false)
     private City city;
+
+    @Column(name = "clazz_", insertable = false, updatable = false)
+    private String clazz_;
+
+    @OneToOne(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
+    private ConfirmationToken confirmationToken;
 
     @Override
@@ -63,5 +106,7 @@
     @Override
     public Collection<? extends GrantedAuthority> getAuthorities() {
-        return List.of(new SimpleGrantedAuthority(this.getClass().getSimpleName()));
+        List<GrantedAuthority> authorities = new ArrayList<>();
+        authorities.add(new SimpleGrantedAuthority(this.getUserRole().name()));
+        return authorities;
     }
 
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Vehicle.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Vehicle.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Vehicle.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,6 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 
@@ -16,10 +18,13 @@
     private Integer vehicleId;
 
+    @NotNull
     @Column(name = "veh_carry_weight", nullable = false)
     private Integer vehicleCarryWeight;
 
+    @NotNull
     @Column(name = "veh_service_interval", nullable = false)
     private Short vehicleServiceInterval;
 
+    @NotNull
     @Column(name = "veh_kilometers", nullable = false)
     private Integer vehicleKilometers;
@@ -31,14 +36,20 @@
     private Integer vehicleLastServiceKm;
 
+    @Size(max = 8)
+    @NotNull
     @Column(name = "veh_plate", nullable = false, length = 8)
     private String vehiclePlate;
 
+    @Size(max = 17)
+    @NotNull
     @Column(name = "veh_vin", nullable = false, length = 17)
     private String vehicleVin;
 
+    @NotNull
     @Column(name = "veh_reg", nullable = false)
     private LocalDate vehicleRegDate;
 
-    @ManyToOne
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
     @JoinColumn(name = "wh_id", nullable = false)
     private Warehouse warehouse;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Warehouse.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Warehouse.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Warehouse.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,6 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 
@@ -15,4 +17,6 @@
     private Integer warehouseId;
 
+    @Size(max = 255)
+    @NotNull
     @Column(name = "wh_adr", nullable = false)
     private String warehouseAddress;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Weekday.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Weekday.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Weekday.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,6 @@
 
 import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 
@@ -15,4 +17,6 @@
     private Short id;
 
+    @Size(max = 20)
+    @NotNull
     @Column(name = "day_name", nullable = false, length = 20)
     private String dayName;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/enumerations/Role.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/enumerations/Role.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/enumerations/Role.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.model.enumerations;
+
+import org.springframework.security.core.GrantedAuthority;
+
+public enum Role implements GrantedAuthority {
+    ROLE_CUSTOMER, ROLE_MANAGER, ROLE_DRIVER, ROLE_ADMIN;
+
+    @Override
+    public String getAuthority() {
+        return "";
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CityRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CityRepository.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CityRepository.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,5 @@
 
 import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.dto.CityDtoRegister;
 import mk.ukim.finki.db.distributorapp.model.entities.City;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -15,8 +16,17 @@
     @Query(
             nativeQuery = true,
-            value = "select * " +
-                    "from city c"
+            value = "select c.* " +
+                    "from city c join region r on c.region_id = r.region_id"
     )
     List<City> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select c.city_id as id, c.city_name as name
+                    from city c
+                    """
+    )
+    List<CityDtoRegister> findAllCityDtos();
 
     @Query(
@@ -26,5 +36,6 @@
                     "where c.city_id = ?1"
     )
-    Optional<City> findById(@NonNull Long id);
+    @Transactional
+    Optional<City> findById(@NonNull Integer id);
 
     @Query(
@@ -56,5 +67,5 @@
     )
     Integer edit(
-            @NonNull Long id,
+            @NonNull Integer id,
             @NonNull String name,
             @NonNull Integer region);
@@ -67,4 +78,4 @@
                     "where c.city_id=?1"
     )
-    void deleteById(@NonNull Long id);
+    void deleteById(@NonNull Integer id);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerRepository.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerRepository.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -8,5 +8,4 @@
 import org.springframework.transaction.annotation.Transactional;
 
-import java.time.LocalTime;
 import java.util.List;
 import java.util.Optional;
@@ -30,7 +29,10 @@
     @Query(
             nativeQuery = true,
-            value = "select * " +
-                    "from customer " +
-                    "where user_id=?1"
+            value = """
+                    select *
+                    from customer c
+                        join users u on c.user_id = u.user_id
+                    where c.user_id = ?1
+                    """
     )
     Optional<Customer> findById(@NonNull Long id);
@@ -40,6 +42,8 @@
     @Query(
             nativeQuery = true,
-            value = "insert into customer(user_id, cust_edb, cust_company_name, cust_address, cust_representative_img) " +
-                    "values (?1,?2,?3,?4,?5)"
+            value = """
+                    insert into customer(user_id, cust_edb, cust_company_name, cust_adr, cust_representative_img)
+                    values (?1,?2,?3,?4,?5)
+                    """
     )
     Integer create(
@@ -55,5 +59,5 @@
             nativeQuery = true,
             value = "update customer " +
-                    "set cust_edb=?2,cust_company_name=?3,cust_address=?4,cust_representative_img=?5 " +
+                    "set cust_edb=?2,cust_company_name=?3,cust_adr=?4,cust_representative_img=?5 " +
                     "where user_id=?1"
     )
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryRepository.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryRepository.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -6,4 +6,5 @@
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -87,3 +88,40 @@
     )
     void delete(@NonNull Long id);
+
+    //------------------------------------------------------------------------------------------------------------------
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select de.*
+                    from driver d join vehicle v on d.veh_id = v.veh_id
+                    join delivery de on v.veh_id = de.veh_id
+                    where d.user_id=:driver and de.d_status_id =1
+                    order by de.del_date desc;
+                    """
+    )
+    List<Delivery> getNewDeliveriesByDriver(@NonNull @Param("driver") Long driver_id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select d.*
+                    from delivery d join orders o on o.del_id=d.del_id
+                    where o.cust_id=:customer and d.d_status_id <> 4;
+                    """
+    )
+    List<Delivery> getCurrentDeliveriesByCustomer(@NonNull @Param("customer") Long customer_id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select d.*
+                    from warehouse w
+                        join manager m on w.wh_id = m.wh_id
+                        join article_unit au on w.wh_id = au.wh_id
+                        join orders o on au.ord_id = o.ord_id
+                        join delivery d on o.del_id = d.del_id
+                    where m.user_id=:manager and d.d_status_id<>4
+                    """
+    )
+    List<Delivery> getCurrentDeliveriesByManager(@NonNull @Param("manager") Long manager_id);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/DriverRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/DriverRepository.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/DriverRepository.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -27,5 +27,9 @@
     @Query(
             nativeQuery = true,
-            value = "select * from driver where user_id=?1"
+            value = """
+                    select *
+                    from driver d join users u on d.user_id = u.user_id
+                    where d.user_id=?1
+                    """
     )
     Optional<Driver> findById(@NonNull Long id);
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ManagerRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ManagerRepository.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ManagerRepository.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -27,5 +27,9 @@
     @Query(
             nativeQuery = true,
-            value = "select * from manager where user_id=?1"
+            value = """
+                    select *
+                    from manager m join users u on m.user_id = u.user_id
+                    where m.user_id=?1
+                    """
     )
     Optional<Manager> findById(@NonNull Long id);
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/OrdersRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/OrdersRepository.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/OrdersRepository.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -6,4 +6,5 @@
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -77,3 +78,29 @@
     )
     void delete(@NonNull Long id);
+    //----------------------------------------------------------------------------------------------------------------------------------
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select *
+                    from orders o
+                    where o.cust_id=:customer and o.o_status_id between 2 and 6
+                    """
+    )
+    List<Orders> getCurrentOrdersByCustomer(@NonNull @Param("customer") Long customer_id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select o.*
+                    from warehouse w
+                        join manager m on w.wh_id= m.wh_id
+                        join article_unit au on au.wh_id = w.wh_id
+                        join orders o on au.ord_id = o.ord_id
+                    where m.user_id = :manager
+                      and o.o_status_id = 1
+                    order by o.ord_date desc
+                    """
+    )
+    List<Orders> getNewOrdersByManager(@NonNull @Param("manager") Long manager_id);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/RegionRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/RegionRepository.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/RegionRepository.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,8 +2,10 @@
 
 import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.dto.RegionDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Region;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -65,3 +67,15 @@
     )
     void deleteById(@NonNull Integer id);
+
+//    -------------------------------------------------------------------------
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select r.region_id as id, r.region_name as name
+                    from region r join city c on r.region_id = c.region_id
+                    where c.city_id = :city
+                    """
+    )
+    RegionDto getRegionByCityId(@NonNull @Param("city") Integer cityId);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/UsersRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/UsersRepository.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/UsersRepository.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -9,4 +9,5 @@
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Optional;
@@ -15,10 +16,12 @@
     @Query(
             nativeQuery = true,
-            value = "select u.*,c.*,d.*,m.*, 0 AS clazz_ " +
-                    "from users u " +
-                    "left join customer c on u.user_id = c.user_id " +
-                    "left join driver d on u.user_id = d.user_id " +
-                    "left join manager m on u.user_id = m.user_id " +
-                    "order by u.user_id"
+            value = """
+                    select *
+                    from users u
+                    left join customer c on u.user_id = c.user_id
+                    left join driver d on u.user_id = d.user_id
+                    left join manager m on u.user_id = m.user_id
+                    order by u.user_id
+                    """
     )
     List<Users> listAll();
@@ -26,5 +29,12 @@
     @Query(
             nativeQuery = true,
-            value = "select * from users where user_name like :name"
+            value = """
+                    select *
+                    from users u
+                    left join customer c on u.user_id = c.user_id
+                    left join driver d on u.user_id = d.user_id
+                    left join manager m on u.user_id = m.user_id
+                    where u.user_name like :name
+                    """
     )
     List<Users> findAllByName(@NonNull @Param("name") String name);
@@ -32,7 +42,14 @@
     @Query(
             nativeQuery = true,
-            value = "select * from users where user_id=:id"
+            value = """
+                    select *
+                    from users u
+                    left join customer c on u.user_id = c.user_id
+                    left join driver d on u.user_id = d.user_id
+                    left join manager m on u.user_id = m.user_id
+                    where u.user_id=:id
+                    """
     )
-    Optional<Users> findById(@NonNull @Param("id") Short id);
+    Optional<Users> findById(@NonNull @Param("id") Long id);
 
     @Modifying
@@ -40,6 +57,6 @@
     @Query(
             nativeQuery = true,
-            value = "insert into users(user_name, user_surname, user_pass, user_salt, user_email, user_mobile, user_email_conf, user_image, city_id) " +
-                    "values (:name,:sur,:pass,:salt,:email,:mob,:active,:img,:cty)"
+            value = "insert into users(user_name,user_surname,user_pass,user_salt,user_email,user_mobile,user_active,user_image,city_id,user_role,user_rtoken,user_rtoken_exp,clazz_) " +
+                    "values (:name,:sur,:pass,:salt,:email,:mob,:active,:img,:cty,:role,:rtoken,:rtoken_exp,:clazz_)"
     )
     Integer create(
@@ -51,6 +68,10 @@
             @NonNull @Param("salt") String salt,
             @NonNull @Param("active") Boolean active,
-            @NonNull @Param("img") String image,
-            @NonNull @Param("cty") Long city_id);
+            @Param("img") String image,
+            @NonNull @Param("cty") Integer city_id,
+            @NonNull @Param("role") String role,
+            @Param("rtoken") String rtoken,
+            @Param("rtoken_exp") LocalDateTime rtoken_exp,
+            @NonNull @Param("clazz_") String clazz_);
 
     @Modifying
@@ -59,5 +80,5 @@
             nativeQuery = true,
             value = "update users " +
-                    "set user_name=:name,user_surname=:sur,user_pass=:pass,user_email=:email,user_mobile=:mob,user_salt=:salt,user_email_conf=:active,user_image=:img,city_id=:cty " +
+                    "set user_name=:name,user_surname=:sur,user_pass=:pass,user_email=:email,user_mobile=:mob,user_salt=:salt,user_active=:active,user_image=:img,city_id=:cty,user_role=:role,user_rtoken=:rtoken,user_rtoken_exp=:rtoken_exp,clazz_=:clazz_ " +
                     "where user_id=:id"
     )
@@ -72,5 +93,9 @@
             @NonNull @Param("active") Boolean active,
             @NonNull @Param("img") String image,
-            @NonNull @Param("cty") Long city_id);
+            @NonNull @Param("cty") Integer city_id,
+            @NonNull @Param("role") String role,
+            @NonNull @Param("rtoken") String rtoken,
+            @NonNull @Param("rtoken_exp") LocalDateTime rtoken_exp,
+            @NonNull @Param("clazz_") String clazz_);
 
     @Modifying
@@ -86,7 +111,12 @@
     @Query(
             nativeQuery = true,
-            value = "select * " +
-                    "from users " +
-                    "where user_email like :email"
+            value = """
+                    select *
+                    from users u
+                        left join customer c on u.user_id = c.user_id
+                        left join driver d on u.user_id = d.user_id
+                        left join manager m on u.user_id = m.user_id
+                    where user_email like :email
+                    """
     )
     Optional<Users> findUserByUserEmailIgnoreCase(@NonNull @Param("email") String email);
@@ -94,7 +124,9 @@
     @Query(
             nativeQuery = true,
-            value = "select * " +
-                    "from users " +
-                    "where user_email:email and user_pass=:pass"
+            value = """
+                    select *
+                    from users
+                    where user_email:email and user_pass=:pass
+                    """
     )
     Optional<Users> findUserByUserNameAndUserPassword(
@@ -108,3 +140,13 @@
     Optional<Users> findUserByUserName(
             @NonNull @Param("email") String username);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select * from users where user_rtoken=:token
+                    """
+    )
+    Optional<Users> findUserByResetToken(@NonNull @Param("token") String token);
+
+    Optional<Users> findUsersByUserEmailIgnoreCase(String email);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/VehicleRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/VehicleRepository.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/VehicleRepository.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,8 +2,10 @@
 
 import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.dto.VehicleBasicDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Vehicle;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -24,4 +26,16 @@
     )
     List<Vehicle> findAllByWarehouse(@NonNull Integer warehouseId);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select veh_id as id,
+                           wh_id as warehouseId,
+                           veh_plate as plateNumber
+                    from vehicle
+                    where wh_id = ?1
+                    """
+    )
+    List<VehicleBasicDto> findAllByWarehouseDto(@NonNull Integer warehouseId);
 
     @Query(
@@ -77,3 +91,18 @@
     )
     void delete(@NonNull Integer id);
+
+    //----------------------------------------------------------------------------------------------------------------------
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select v.veh_plate,v.veh_reg
+                    from warehouse w
+                             join manager m on w.wh_id = m.wh_id
+                             join vehicle v on w.wh_id=v.wh_id
+                    where m.user_id=:manager
+                    group by v.veh_plate, v.veh_reg
+                    order by v.veh_reg
+                    """
+    )
+    List<Vehicle> getVehiclesByManager(@NonNull @Param("manager") Long managerId);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/WarehouseRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/WarehouseRepository.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/WarehouseRepository.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,8 +2,11 @@
 
 import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.dto.WarehouseDto;
+import mk.ukim.finki.db.distributorapp.model.entities.ArticleUnit;
 import mk.ukim.finki.db.distributorapp.model.entities.Warehouse;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -20,13 +23,13 @@
     @Query(
             nativeQuery = true,
-            value = "select * from warehouse where city_id=?1"
+            value = "select * from warehouse where city_id = ?1"
     )
-    List<Warehouse> findAllByCity(@NonNull Long city);
+    List<Warehouse> findAllByCity(@NonNull Integer city);
 
     @Query(
             nativeQuery = true,
-            value = "select * from warehouse where wh_id=?1"
+            value = "select * from warehouse where wh_id = ?1"
     )
-    Optional<Warehouse> findById(@NonNull Short id);
+    Optional<Warehouse> findById(@NonNull Integer id);
 
     @Modifying
@@ -34,10 +37,10 @@
     @Query(
             nativeQuery = true,
-            value = "insert into warehouse(wh_address, city_id) " +
+            value = "insert into warehouse(wh_adr, city_id) " +
                     "values (?1,?2)"
     )
     Integer create(
             @NonNull String whAddress,
-            @NonNull Long city);
+            @NonNull Integer city);
 
     @Modifying
@@ -46,11 +49,11 @@
             nativeQuery = true,
             value = "update warehouse " +
-                    "set wh_address=?2,city_id=?3 " +
-                    "where wh_id=?1"
+                    "set wh_adr = ?2,city_id = ?3 " +
+                    "where wh_id = ?1"
     )
     Integer edit(
             @NonNull Integer id,
             @NonNull String whAddress,
-            @NonNull Long city);
+            @NonNull Integer city);
 
     @Modifying
@@ -58,6 +61,56 @@
     @Query(
             nativeQuery = true,
-            value = "delete from warehouse where wh_id=?1"
+            value = "delete from warehouse where wh_id = ?1"
     )
     void delete(@NonNull Integer id);
+    //-------------------------------------------------------------------------------------------------------------------
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select a.art_name, man.man_name, count(a.art_id) as total_units
+                    from warehouse w
+                        join manager m on m.wh_id = w.wh_id
+                        join article_unit au on au.wh_id = w.wh_id
+                        join unit_price up on au.unit_id = up.unit_id
+                        join price p on p.price_id=up.price_id
+                        join article a on p.art_id=a.art_id
+                        join article a on au = a.art_id
+                        join manufacturer man on a.man_id = man.man_id
+                    where m.user_id = :manager
+                    group by a.art_name, man.man_name
+                    order by total_units
+                    """
+    )
+    List<ArticleUnit> getInventoryByManager(@NonNull @Param("manager") Long manager_id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select * from warehouse w where w.city_id = ?1
+                    """
+    )
+    Warehouse findWarehouseByCityId(Integer id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    with reg as (
+                        select r.*
+                        from city c1 join region r on c1.region_id = r.region_id
+                        where c1.city_id = :city
+                    )
+                    select w.wh_id as id,
+                           w.wh_adr as address,
+                           c.city_id as cityId,
+                           c.city_name as cityName,
+                           r1.region_id as regionId,
+                           r1.region_name as regionName
+                    from warehouse w
+                    join city c on c.city_id = w.city_id
+                    join reg r1 on r1.region_id = c.region_id
+                    where c.region_id = r1.region_id
+                   """
+    )
+    WarehouseDto findWarehouseDtoByCityId(@NonNull @Param("city") Integer cityId);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/ConfirmationToken.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/ConfirmationToken.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/ConfirmationToken.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -18,5 +18,5 @@
 public class ConfirmationToken {
     @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     @Column(name = "t_id")
     private Long tokenId;
@@ -29,4 +29,5 @@
 
     @OneToOne(targetEntity = Users.class, fetch = FetchType.EAGER)
+    @JoinColumn(name = "t_user", referencedColumnName = "user_id", nullable = false, unique = true)
     private Users user;
 
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/CustomUserDetailsService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/CustomUserDetailsService.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/CustomUserDetailsService.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,55 @@
+package mk.ukim.finki.db.distributorapp.security;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.model.entities.Users;
+import mk.ukim.finki.db.distributorapp.repository.CustomerRepository;
+import mk.ukim.finki.db.distributorapp.repository.DriverRepository;
+import mk.ukim.finki.db.distributorapp.repository.ManagerRepository;
+import mk.ukim.finki.db.distributorapp.repository.UsersRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.security.provisioning.InMemoryUserDetailsManager;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Objects;
+
+@Service
+@RequiredArgsConstructor
+public class CustomUserDetailsService implements UserDetailsService {
+
+    private final UsersRepository usersRepository;
+    private final CustomerRepository customerRepository;
+    private final ManagerRepository managerRepository;
+    private final DriverRepository driverRepository;
+    @Autowired
+    @Lazy
+    private InMemoryUserDetailsManager inMemoryUserDetailsManager;
+
+    @Override
+    @Transactional
+    public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
+
+        if ("superuser@admin.com".equalsIgnoreCase(email)) {
+            return inMemoryUserDetailsManager.loadUserByUsername(email);
+        }
+
+        Users user = this.usersRepository.findUsersByUserEmailIgnoreCase(email)
+                .orElseThrow(() -> new UsernameNotFoundException(email));
+
+        if(Objects.equals(user.getClazz_(), "CUSTOMER")){
+            return this.customerRepository.findById(user.getUserId())
+                    .orElseThrow(() -> new UsernameNotFoundException(email));
+        }else if(Objects.equals(user.getClazz_(), "MANAGER")){
+            return this.managerRepository.findById(user.getUserId())
+                    .orElseThrow(() -> new UsernameNotFoundException(email));
+        } else if(Objects.equals(user.getClazz_(), "DRIVER")){
+            return this.driverRepository.findById(user.getUserId())
+                    .orElseThrow(() -> new UsernameNotFoundException(email));
+        }
+        return user;
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/CustomUsernamePasswordAuthenticationProvider.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/CustomUsernamePasswordAuthenticationProvider.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/CustomUsernamePasswordAuthenticationProvider.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,40 @@
+package mk.ukim.finki.db.distributorapp.security;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.service.UsersService;
+import org.springframework.security.authentication.AuthenticationProvider;
+import org.springframework.security.authentication.BadCredentialsException;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.stereotype.Component;
+
+@Component
+@RequiredArgsConstructor
+public class CustomUsernamePasswordAuthenticationProvider implements AuthenticationProvider {
+
+    private final UsersService usersService;
+    private final CustomUserDetailsService customUserDetailsService;
+
+    @Override
+    public Authentication authenticate(Authentication authentication) throws AuthenticationException {
+        String email = authentication.getName();
+        String password = authentication.getCredentials().toString();
+
+        if("".equals(email)||"".equals(password)){
+            throw new BadCredentialsException("Invalid email or password");
+        }
+
+        UserDetails userDetails = this.customUserDetailsService.loadUserByUsername(email);
+        String salt = this.usersService.findUserByEmail(email).getUserSalt();
+        if(!PassEncryption.verifyUserPassword(password, userDetails.getPassword(), salt))
+            throw new BadCredentialsException("Invalid password");
+        return new UsernamePasswordAuthenticationToken(userDetails,userDetails.getPassword(), userDetails.getAuthorities());
+    }
+
+    @Override
+    public boolean supports(Class<?> aClass) {
+        return aClass.equals(UsernamePasswordAuthenticationToken.class);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/PassEncryption.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/PassEncryption.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/PassEncryption.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -42,5 +42,5 @@
 
     public static String generateSecurePassword(String password, String salt) {
-        String res = null;
+        String res;
         byte[] securePassword = hash(password.toCharArray(), salt.getBytes());
 
@@ -50,6 +50,6 @@
 
     public static boolean verifyUserPassword(String providedPassword, String securedPassword, String salt) {
-        boolean res = false;
-        String newSecuredPassword = generateSecurePassword(securedPassword, salt);
+        boolean res;
+        String newSecuredPassword = generateSecurePassword(providedPassword, salt);
         res = newSecuredPassword.equals(securedPassword);
 
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/PassEncryptionPasswordEncoder.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/PassEncryptionPasswordEncoder.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/PassEncryptionPasswordEncoder.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -3,4 +3,7 @@
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Component;
+
+import static mk.ukim.finki.db.distributorapp.security.PassEncryption.generateSecurePassword;
+import static mk.ukim.finki.db.distributorapp.security.PassEncryption.verifyUserPassword;
 
 @Component
@@ -9,20 +12,18 @@
     @Override
     public String encode(CharSequence rawPassword) {
-        // Generate a new salt and hash the password
         throw new UnsupportedOperationException("Salt must be provided explicitly!");
     }
 
     public String encodeWithSalt(CharSequence rawPassword, String salt) {
-        return PassEncryption.generateSecurePassword(rawPassword.toString(), salt);
+        return generateSecurePassword(rawPassword.toString(), salt);
     }
 
     @Override
     public boolean matches(CharSequence rawPassword, String encodedPassword) {
-        // Split stored password into salt and hash
         throw new UnsupportedOperationException("Use matchesWithSalt for explicit salt verification!");
     }
 
     public boolean matchesWithSalt(CharSequence rawPassword, String encodedPassword, String salt) {
-        return PassEncryption.verifyUserPassword(rawPassword.toString(), encodedPassword, salt);
+        return verifyUserPassword(rawPassword.toString(), encodedPassword, salt);
     }
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/SecurityConfig.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/SecurityConfig.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/SecurityConfig.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,92 @@
+package mk.ukim.finki.db.distributorapp.security;
+
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
+import org.springframework.security.core.userdetails.User;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.provisioning.InMemoryUserDetailsManager;
+import org.springframework.security.web.SecurityFilterChain;
+
+@Configuration
+@EnableWebSecurity
+@RequiredArgsConstructor
+public class SecurityConfig {
+
+    private final CustomUsernamePasswordAuthenticationProvider authenticationProvider;
+    private final SuperUserAuthenticationProvider superUserAuthenticationProvider;
+
+    @Bean
+    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
+        http
+                .authorizeHttpRequests(auth -> auth
+                        .requestMatchers("/auth/**", "/rest/auth/**", "/reset-password/**", "/css/**", "/js/**").permitAll()
+                        .requestMatchers("/admin/**").hasRole("ADMIN")
+                        .requestMatchers("/customer/**").hasAnyRole("CUSTOMER", "ADMIN")
+                        .requestMatchers("/manager/**").hasAnyRole("MANAGER", "ADMIN")
+                        .requestMatchers("/driver/**").hasAnyRole("DRIVER","ADMIN")
+                            .anyRequest()
+                                    .authenticated()
+                )
+                .formLogin(login -> login
+                        .loginPage("/auth/login")
+                        .loginProcessingUrl("/auth/login")
+                        .usernameParameter("email")
+                        .passwordParameter("password")
+                        .defaultSuccessUrl("/home", true)
+                        .failureUrl("/auth/login?error=true")
+                        .permitAll()
+                )
+                .logout(logout -> logout
+                        .logoutUrl("/logout")
+                        .logoutSuccessUrl("/login?logout")
+                        .clearAuthentication(true)
+                        .invalidateHttpSession(true)
+                        .deleteCookies("JSESSIONID")
+                        .logoutSuccessUrl("/")
+                        .permitAll()
+                )
+                .exceptionHandling((ex) -> ex
+                        .accessDeniedPage("/access-denied"))
+                .csrf(AbstractHttpConfigurer::disable);
+
+        return http.build();
+    }
+
+    @Bean
+    public InMemoryUserDetailsManager inMemoryUserDetailsManager() {
+        PasswordEncoder standardEncoder = new BCryptPasswordEncoder();
+        UserDetails superUser = User.withUsername("superuser@admin.com")
+                .password(standardEncoder.encode("supersecret"))
+                .roles("ADMIN")
+                .build();
+        return new InMemoryUserDetailsManager(superUser);
+    }
+
+    @Bean
+    public AuthenticationManager authenticationManager(
+            HttpSecurity http
+    ) throws Exception
+    {
+        AuthenticationManagerBuilder authenticationManagerBuilder =
+                http.getSharedObject(AuthenticationManagerBuilder.class);
+
+        authenticationManagerBuilder.authenticationProvider(superUserAuthenticationProvider);
+        authenticationManagerBuilder.authenticationProvider(authenticationProvider);
+
+        return authenticationManagerBuilder.build();
+    }
+
+    @Bean
+    public PasswordEncoder passwordEncoder() {
+        return new PassEncryptionPasswordEncoder();
+    }
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/SuperUserAuthenticationProvider.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/SuperUserAuthenticationProvider.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/SuperUserAuthenticationProvider.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,46 @@
+package mk.ukim.finki.db.distributorapp.security;
+
+import org.springframework.security.authentication.AuthenticationProvider;
+import org.springframework.security.authentication.BadCredentialsException;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.core.userdetails.User;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SuperUserAuthenticationProvider implements AuthenticationProvider {
+
+    private static final String SUPERUSER_ENCODED_PASSWORD = "$2a$12$KC9Z0kHyu06iV4xlpKOgL.p2KH3NS9EY/N3g97nGAtC/NCpRXVgXa"; // example value
+
+    private final PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+
+    @Override
+    public Authentication authenticate(Authentication authentication) throws AuthenticationException {
+        String username = authentication.getName();
+        String rawPassword = authentication.getCredentials().toString();
+
+        if (!"superuser@admin.com".equalsIgnoreCase(username)) {
+            return null;
+        }
+
+        if (!passwordEncoder.matches(rawPassword, SUPERUSER_ENCODED_PASSWORD)) {
+            throw new BadCredentialsException("Invalid superuser credentials");
+        }
+
+        UserDetails superUser = User.withUsername("superuser@admin.com")
+                .password(SUPERUSER_ENCODED_PASSWORD)
+                .roles("ADMIN")
+                .build();
+
+        return new UsernamePasswordAuthenticationToken(superUser, superUser.getPassword(), superUser.getAuthorities());
+    }
+
+    @Override
+    public boolean supports(Class<?> authentication) {
+        return UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,15 +1,93 @@
 package mk.ukim.finki.db.distributorapp.security.auth;
 
-import mk.ukim.finki.db.distributorapp.service.UsersService;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import jakarta.servlet.http.HttpServletRequest;
+import mk.ukim.finki.db.distributorapp.model.dto.CityDtoRegister;
+import mk.ukim.finki.db.distributorapp.model.dto.LoginRequestDto;
+import mk.ukim.finki.db.distributorapp.model.dto.RegisterRequestDto;
+import mk.ukim.finki.db.distributorapp.model.entities.Users;
+import mk.ukim.finki.db.distributorapp.model.exceptions.InvalidUserCredentialsException;
+import mk.ukim.finki.db.distributorapp.service.CityService;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
-@RestController
+import java.util.List;
+
+@Controller
 @RequestMapping("/auth")
 public class AuthController {
-    private final UsersService usersService;
 
-    public AuthController(UsersService usersService) {
-        this.usersService = usersService;
+    private final CityService cityService;
+    private final AuthService authService;
+
+    public AuthController(CityService cityService, AuthService authService) {
+        this.cityService = cityService;
+        this.authService = authService;
+    }
+
+    @GetMapping("/login")
+    public String login(@RequestParam(value = "error", required = false) String error, Model model) {
+        if (error != null) {
+            model.addAttribute("error", "Invalid username or password");
+        }
+        return "authentication/login";
+    }
+
+    @PostMapping("/login")
+    public String login(@ModelAttribute LoginRequestDto loginRequest, RedirectAttributes redirectAttributes) {
+        try{
+            Users user = authService.login(loginRequest);
+
+            switch (user.getUserRole()){
+                case ROLE_CUSTOMER -> {
+                    return "redirect:/home/customer";
+                }
+                case ROLE_ADMIN -> {
+                    return "redirect:/home/admin";
+                }
+                case ROLE_MANAGER -> {
+                    return "redirect:/home/manager";
+                }
+                case ROLE_DRIVER -> {
+                    return "redirect:/home/driver";
+                }
+                default -> {
+                    return "redirect:/home";
+                }
+            }
+        }catch (InvalidUserCredentialsException e) {
+            redirectAttributes.addFlashAttribute("error", "Invalid credentials.");
+            return "redirect:/auth/login";
+        }
+    }
+
+    @GetMapping("/register")
+    public String registerCustomer(Model model) {
+        List<CityDtoRegister> cities = this.cityService.findAllCityDtos();
+        model.addAttribute("cities", cities);
+        return "authentication/register";
+    }
+
+    @PostMapping("/register")
+    public String register(@ModelAttribute RegisterRequestDto registerRequest) throws Exception {
+        authService.register(registerRequest);
+        return "redirect:/auth/login";
+    }
+
+    @GetMapping("/changePass")
+    public String changePassword(Model model) {
+        return "authentication/changePass";
+    }
+
+    @GetMapping("/logout")
+    public String logout(HttpServletRequest req) {
+        req.getSession().invalidate();
+        return "redirect:/auth/login";
+    }
+
+    @PostMapping("/logout")
+    public String logout(Model model){
+        return "redirect:/auth/login";
     }
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthService.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthService.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,5 +1,8 @@
 package mk.ukim.finki.db.distributorapp.security.auth;
 
-import mk.ukim.finki.db.distributorapp.model.entities.City;
+import mk.ukim.finki.db.distributorapp.model.dto.CreateDriverDto;
+import mk.ukim.finki.db.distributorapp.model.dto.CreateManagerDto;
+import mk.ukim.finki.db.distributorapp.model.dto.LoginRequestDto;
+import mk.ukim.finki.db.distributorapp.model.dto.RegisterRequestDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Users;
 import org.springframework.http.ResponseEntity;
@@ -14,7 +17,10 @@
     ResponseEntity<?> confirmEmail(String confirmationToken);
 
-    Users register(String name, String surname, String email,
-                   String password, String mobile, String image, City city);
+    void register(RegisterRequestDto registerRequest) throws Exception;
 
-    Users login(String username, String password);
+    void createManager(CreateManagerDto createUserDto) throws Exception;
+
+    void createDriver(CreateDriverDto createDriverDto) throws Exception;
+
+    Users login(LoginRequestDto loginRequest);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,10 +1,14 @@
 package mk.ukim.finki.db.distributorapp.security.auth;
 
-import mk.ukim.finki.db.distributorapp.model.entities.City;
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.model.dto.CreateDriverDto;
+import mk.ukim.finki.db.distributorapp.model.dto.CreateManagerDto;
+import mk.ukim.finki.db.distributorapp.model.dto.LoginRequestDto;
+import mk.ukim.finki.db.distributorapp.model.dto.RegisterRequestDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Users;
+import mk.ukim.finki.db.distributorapp.model.enumerations.Role;
 import mk.ukim.finki.db.distributorapp.model.exceptions.InvalidArgumentsException;
 import mk.ukim.finki.db.distributorapp.model.exceptions.InvalidUserCredentialsException;
-import mk.ukim.finki.db.distributorapp.repository.ConfirmationTokenRepository;
-import mk.ukim.finki.db.distributorapp.repository.UsersRepository;
+import mk.ukim.finki.db.distributorapp.repository.*;
 import mk.ukim.finki.db.distributorapp.security.ConfirmationToken;
 import mk.ukim.finki.db.distributorapp.security.EmailService;
@@ -14,8 +18,10 @@
 import org.springframework.mail.SimpleMailMessage;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Optional;
 
 @Service
+@RequiredArgsConstructor
 public class AuthServiceImpl implements AuthService {
 
@@ -24,11 +30,7 @@
     private final EmailService emailService;
     private final PassEncryptionPasswordEncoder passwordEncoder;
-
-    public AuthServiceImpl(UsersRepository usersRepository, ConfirmationTokenRepository confirmationTokenRepository, EmailService emailService, PassEncryptionPasswordEncoder passwordEncoder) {
-        this.usersRepository = usersRepository;
-        this.confirmationTokenRepository = confirmationTokenRepository;
-        this.emailService = emailService;
-        this.passwordEncoder = passwordEncoder;
-    }
+    private final CustomerRepository customerRepository;
+    private final ManagerRepository managerRepository;
+    private final DriverRepository driverRepository;
 
     @Override
@@ -56,10 +58,28 @@
 
     @Override
-    public Users register(String name, String surname, String email, String password, String mobile, String image, City city) {
+    @Transactional
+    public void register(RegisterRequestDto registerRequest) throws Exception {
         String saltValue = PassEncryption.genSaltValue(30);
-        String safePass = passwordEncoder.encodeWithSalt(password, saltValue);
+        String safePass = passwordEncoder.encodeWithSalt(registerRequest.getPassword(), saltValue);
 
-        this.usersRepository.create(name, surname, safePass, email, mobile, saltValue, false, image, city.getCityId());
-        Users user = this.usersRepository.findUserByUserEmailIgnoreCase(email).orElseThrow(InvalidUserCredentialsException::new);
+        Integer res = this.usersRepository.create(
+                registerRequest.getName(),
+                registerRequest.getSurname(),
+                safePass,
+                registerRequest.getEmail(),
+                registerRequest.getMobile(),
+                saltValue,
+                false,
+                null,
+                registerRequest.getCity(),
+                Role.ROLE_CUSTOMER.name(),
+                null,
+                null,
+                "CUSTOMER");
+        if (res == 0) {
+            throw new Exception("User insertion failed");
+        }
+
+        Users user = this.usersRepository.findUserByUserEmailIgnoreCase(registerRequest.getEmail()).orElseThrow(InvalidUserCredentialsException::new);
 
         ConfirmationToken confirmationToken = new ConfirmationToken(user);
@@ -67,5 +87,5 @@
 
         SimpleMailMessage mailMessage = new SimpleMailMessage();
-        mailMessage.setTo(email);
+        mailMessage.setTo(registerRequest.getEmail());
         mailMessage.setSubject("Complete Registration!");
         mailMessage.setText(("To confirm your account, please click here: " +
@@ -74,16 +94,98 @@
         emailService.sendEmail(mailMessage);
 
-        return user;
+        this.customerRepository.create(
+                user.getUserId(),
+                registerRequest.getEdb(),
+                registerRequest.getName(),
+                registerRequest.getAddress(),
+                registerRequest.getProfileImage());
     }
 
     @Override
-    public Users login(String username, String password) {
-        if (username == null || username.isEmpty() || password == null || password.isEmpty()) {
+    @Transactional
+    public void createManager(CreateManagerDto createManagerDto) throws Exception {
+        String saltValue = PassEncryption.genSaltValue(30);
+        String safePass = passwordEncoder.encodeWithSalt(createManagerDto.getPassword(), saltValue);
+
+        Integer res = this.usersRepository.create(
+                createManagerDto.getName(),
+                createManagerDto.getSurname(),
+                safePass,
+                createManagerDto.getEmail(),
+                createManagerDto.getMobile(),
+                saltValue,
+                false,
+                null,
+                createManagerDto.getCity(),
+                Role.ROLE_MANAGER.name(),
+                null,
+                null,
+                "MANAGER");
+
+        if (res == 0) {
+            throw new Exception("User insertion failed");
+        }
+
+        Users user = this.usersRepository.findUserByUserEmailIgnoreCase(createManagerDto.getEmail()).orElseThrow(InvalidUserCredentialsException::new);
+        this.managerRepository.create(
+                user.getUserId(),
+                createManagerDto.getWarehouseId()
+        );
+    }
+
+    @Override
+    @Transactional
+    public void createDriver(CreateDriverDto createDriverDto) throws Exception{
+        String saltValue = PassEncryption.genSaltValue(30);
+        String safePass = passwordEncoder.encodeWithSalt(createDriverDto.getPassword(), saltValue);
+
+        Integer res = this.usersRepository.create(
+                createDriverDto.getName(),
+                createDriverDto.getSurname(),
+                safePass,
+                createDriverDto.getEmail(),
+                createDriverDto.getMobile(),
+                saltValue,
+                false,
+                null,
+                createDriverDto.getCity(),
+                Role.ROLE_DRIVER.name(),
+                null,
+                null,
+                "DRIVER");
+
+        if (res == 0) {
+            throw new Exception("User insertion failed");
+        }
+
+        Users user = this.usersRepository.findUserByUserEmailIgnoreCase(createDriverDto.getEmail()).orElseThrow(InvalidUserCredentialsException::new);
+        this.driverRepository.create(
+                user.getUserId(),
+                createDriverDto.getVehicle()
+        );
+    }
+
+    @Override
+    @Transactional
+    public Users login(LoginRequestDto loginRequest) {
+        if (loginRequest.getEmail() == null
+                || loginRequest.getEmail().isEmpty()
+                || loginRequest.getPassword() == null
+                || loginRequest.getPassword().isEmpty()) {
+
             throw new InvalidArgumentsException();
         }
 
-        String secPassword = passwordEncoder.encodeWithSalt(password, usersRepository.findUserByUserName(username).get().getUserSalt());
+        Users user = this.usersRepository.findUsersByUserEmailIgnoreCase(loginRequest.getEmail())
+                .orElseThrow(InvalidUserCredentialsException::new);
 
-        return usersRepository.findUserByUserNameAndUserPassword(username, secPassword).orElseThrow(InvalidUserCredentialsException::new);
+        String secPassword = passwordEncoder
+                .encodeWithSalt(loginRequest.getPassword(), user.getUserSalt());
+
+        if (!secPassword.equals(user.getPassword())) {
+            throw new InvalidUserCredentialsException();
+        }
+
+        return user;
     }
 }
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/LoginController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/LoginController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,39 +1,0 @@
-//package mk.ukim.finki.db.distributorapp.web;
-//
-//import jakarta.servlet.http.HttpServletRequest;
-//import mk.ukim.finki.db.distributorapp.model.entities.Users;
-//import mk.ukim.finki.db.distributorapp.model.exceptions.InvalidUserCredentialsException;
-//import mk.ukim.finki.db.distributorapp.service.UsersService;
-//import org.springframework.stereotype.Controller;
-//import org.springframework.ui.Model;
-//import org.springframework.web.bind.annotation.GetMapping;
-//import org.springframework.web.bind.annotation.PostMapping;
-//import org.springframework.web.bind.annotation.RequestMapping;
-//
-//@Controller
-//@RequestMapping("/login")
-//public class LoginController {
-//    private final UsersService usersService;
-//
-//    public LoginController(UsersService usersService) {
-//        this.usersService = usersService;
-//    }
-//
-//    @GetMapping
-//    public String getLoginPage() {
-//        return "login";
-//    }
-//
-//    @PostMapping
-//    public String login(HttpServletRequest req, Model model) {
-//        Users user = null;
-//        try {
-//            user = this.usersService.login(req.getParameter("email"), req.getParameter("password"));
-//            return "redirect:/home";
-//        } catch (InvalidUserCredentialsException e) {
-//            model.addAttribute("hasError", true);
-//            model.addAttribute("error", e.getMessage());
-//            return "login";
-//        }
-//    }
-//}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/PasswordResetController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/PasswordResetController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/PasswordResetController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,105 @@
+package mk.ukim.finki.db.distributorapp.security.auth;
+
+import mk.ukim.finki.db.distributorapp.model.dto.UserDto;
+import mk.ukim.finki.db.distributorapp.model.entities.Users;
+import mk.ukim.finki.db.distributorapp.security.EmailService;
+import mk.ukim.finki.db.distributorapp.security.PassEncryptionPasswordEncoder;
+import mk.ukim.finki.db.distributorapp.service.UsersService;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.time.LocalDateTime;
+import java.util.UUID;
+
+@Controller
+@RequestMapping("/reset-password")
+public class PasswordResetController {
+    private final UsersService usersService;
+    private final EmailService emailService;
+    private final PassEncryptionPasswordEncoder passwordEncoder;
+
+    public PasswordResetController(UsersService usersService, EmailService emailService, PassEncryptionPasswordEncoder passwordEncoder) {
+        this.usersService = usersService;
+        this.emailService = emailService;
+        this.passwordEncoder = passwordEncoder;
+    }
+
+    @GetMapping("/request")
+    public String resetPasswordRequest() {
+        return "authentication/reset-password-request";
+    }
+
+    @PostMapping("/reset-password-request")
+    public String resetPasswordRequest(@RequestParam("email") String email, Model model) {
+
+        Users user = this.usersService.findUserByEmail(email);
+        if(user==null){
+            model.addAttribute("error", "No user found with this email.");
+            return "authentication/reset-password-request";
+        }
+
+        String token = UUID.randomUUID().toString();
+        user.setUserResetToken(token);
+        user.setUserResetTokenExpiry(LocalDateTime.now().plusHours(1));
+
+        UserDto dto = this.usersService.buildDto(user);
+        this.usersService.edit(dto);
+
+        String resetLink = "https://localhost:8080/reset-password?token=" + token;
+        String emailBody = "Click the link to reset your password: " + resetLink;
+
+        SimpleMailMessage message = new SimpleMailMessage();
+        message.setTo(email);
+        message.setSubject("Password Reset Request");
+        message.setText(emailBody);
+        emailService.sendEmail(message);
+
+        model.addAttribute("success", "A password link has been sent to your email.");
+        return "authentication/reset-password-request";
+    }
+
+    @GetMapping("/reset-password")
+    public String showResetPasswordForm(@RequestParam("token") String token, Model model){
+
+        Users user = usersService.findUserByResetToken(token);
+        if(user==null || user.getUserResetTokenExpiry().isBefore(LocalDateTime.now())){
+            model.addAttribute("error", "Invalid or expired token.");
+            return "authentication/reset-password";
+        }
+        model.addAttribute("token", token);
+        return "authentication/reset-password";
+    }
+
+    @PostMapping("/reset-password")
+    public String handleResetPassword(
+            @RequestParam("token") String token,
+            @RequestParam("newPassword") String newPassword,
+            @RequestParam("confirmPassword") String confirmPassword,
+            Model model){
+
+        Users user = this.usersService.findUserByResetToken(token);
+        if (user == null || user.getUserResetTokenExpiry().isBefore(LocalDateTime.now())) {
+            model.addAttribute("error", "Invalid or expired token.");
+            return "authentication/reset-password";
+        }
+
+        if(!newPassword.equals(confirmPassword)){
+            model.addAttribute("error", "Passwords do not match.");
+            return "authentication/reset-password";
+        }
+
+        user.setUserPassword(passwordEncoder.encodeWithSalt(newPassword,user.getUserSalt()));
+        user.setUserResetToken(null);
+        user.setUserResetTokenExpiry(null);
+        UserDto dto = this.usersService.buildDto(user);
+        this.usersService.edit(dto);
+
+        model.addAttribute("success", "Your password has been reset successfully.");
+        return "authentication/reset-password";
+    }
+}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/RegisterController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/RegisterController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,55 +1,0 @@
-//package mk.ukim.finki.db.distributorapp.web;
-//
-//import mk.ukim.finki.db.distributorapp.model.entities.City;
-//import mk.ukim.finki.db.distributorapp.model.exceptions.InvalidArgumentsException;
-//import mk.ukim.finki.db.distributorapp.service.CityService;
-//import mk.ukim.finki.db.distributorapp.service.UsersService;
-//import org.springframework.stereotype.Controller;
-//import org.springframework.ui.Model;
-//import org.springframework.web.bind.annotation.GetMapping;
-//import org.springframework.web.bind.annotation.PostMapping;
-//import org.springframework.web.bind.annotation.RequestMapping;
-//import org.springframework.web.bind.annotation.RequestParam;
-//
-//@Controller
-//@RequestMapping("/register")
-//public class RegisterController {
-//    private final UsersService usersService;
-//    private final CityService cityService;
-//
-//    public RegisterController(UsersService usersService, CityService cityService) {
-//        this.usersService = usersService;
-//        this.cityService = cityService;
-//    }
-//
-//    @GetMapping
-//    public String getRegisterPage(@RequestParam(required = false) String error, Model model) {
-//        if (error != null && !error.isEmpty()) {
-//            model.addAttribute("hasError", true);
-//            model.addAttribute("error", error);
-//        }
-//
-//        model.addAttribute("bodyContent", "register");
-//        model.addAttribute("cities", cityService.listCities());
-//        return "register";
-//    }
-//
-//    @PostMapping
-//    public String register(
-//            @RequestParam String email,
-//            @RequestParam String password,
-//            @RequestParam String repeatedPassword,
-//            @RequestParam String name,
-//            @RequestParam String surname,
-//            @RequestParam String mobile,
-//            @RequestParam Long city
-//    ) {
-//        try {
-//            City selectedCity = this.cityService.getCityObjById(city).get();
-//            this.usersService.register(name, surname, email, password, repeatedPassword, mobile, selectedCity);
-//            return "redirect:/login";
-//        } catch (InvalidArgumentsException exception) {
-//            return "redirect:/register?error=" + exception.getMessage();
-//        }
-//    }
-//}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/RestAuthController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/RestAuthController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/RestAuthController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,36 @@
+package mk.ukim.finki.db.distributorapp.security.auth;
+
+import mk.ukim.finki.db.distributorapp.model.dto.LoginRequestDto;
+import mk.ukim.finki.db.distributorapp.model.dto.LoginResponseDto;
+import mk.ukim.finki.db.distributorapp.model.dto.RegisterRequestDto;
+import mk.ukim.finki.db.distributorapp.model.entities.Users;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/rest/auth")
+public class RestAuthController {
+
+    private final AuthService authService;
+
+    public RestAuthController(AuthService authService) {
+        this.authService = authService;
+    }
+
+    @PostMapping("/login")
+    public ResponseEntity<?> login(@ModelAttribute LoginRequestDto loginRequest) {
+        Users user = authService.login(loginRequest);
+        return ResponseEntity.ok(new LoginResponseDto(user.getUserEmail()));
+    }
+
+    @PostMapping("/register")
+    public ResponseEntity<?> register(@ModelAttribute RegisterRequestDto registerRequest) throws Exception {
+        authService.register(registerRequest);
+        return ResponseEntity.status(HttpStatus.CREATED).body("User registered successfully");
+    }
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CityService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CityService.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CityService.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,5 @@
 
 import mk.ukim.finki.db.distributorapp.model.dto.CityDto;
+import mk.ukim.finki.db.distributorapp.model.dto.CityDtoRegister;
 import mk.ukim.finki.db.distributorapp.model.entities.City;
 
@@ -9,9 +10,13 @@
 public interface CityService {
 
+    List<City> listCitiesObj();
+
     List<CityDto> listCities();
 
-    CityDto getCityById(Long id);
+    List<CityDtoRegister> findAllCityDtos();
 
-    Optional<City> getCityObjById(Long id);
+    CityDto getCityById(Integer id);
+
+    Optional<City> getCityObjById(Integer id);
 
     Integer create(CityDto cityDto);
@@ -19,5 +24,5 @@
     Integer edit(CityDto cityDto);
 
-    void deleteById(Long id);
+    void deleteById(Integer id);
 
     List<CityDto> searchCities(String text);
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerService.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerService.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,4 +2,5 @@
 
 import mk.ukim.finki.db.distributorapp.model.dto.CustomerDto;
+import mk.ukim.finki.db.distributorapp.model.entities.Customer;
 
 import java.util.List;
@@ -13,4 +14,6 @@
     CustomerDto findCustomerById(Long id);
 
+    Customer getCustomerObjById(Long id);
+
     Integer create(CustomerDto customerDto);
 
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryService.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryService.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,5 +2,7 @@
 
 import mk.ukim.finki.db.distributorapp.model.dto.DeliveryDto;
+import mk.ukim.finki.db.distributorapp.model.entities.Customer;
 import mk.ukim.finki.db.distributorapp.model.entities.Driver;
+import mk.ukim.finki.db.distributorapp.model.entities.Manager;
 import mk.ukim.finki.db.distributorapp.model.entities.Vehicle;
 
@@ -21,3 +23,9 @@
 
     void deleteById(Long del_id);
+
+    List<DeliveryDto> getAllNewDeliveriesByDriver(Driver driver);
+
+    List<DeliveryDto> getCurrentDeliveriesByCustomer (Customer customer);
+
+    List<DeliveryDto> getCurrentDeliveriesByManager (Manager manager);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/DriverService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/DriverService.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/DriverService.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,8 +2,10 @@
 
 import mk.ukim.finki.db.distributorapp.model.dto.DriverDto;
+import mk.ukim.finki.db.distributorapp.model.entities.Driver;
 
 import java.util.List;
 
 public interface DriverService {
+
     List<DriverDto> getAllDrivers();
 
@@ -11,4 +13,6 @@
 
     DriverDto findById(Long id);
+
+    Driver getDriverObjById(Long id);
 
     Integer create(DriverDto driverDto);
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ManagerService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ManagerService.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ManagerService.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -2,11 +2,15 @@
 
 import mk.ukim.finki.db.distributorapp.model.dto.ManagerDto;
+import mk.ukim.finki.db.distributorapp.model.entities.Manager;
 
 import java.util.List;
 
 public interface ManagerService {
+
     List<ManagerDto> getAllManagers();
 
-    ManagerDto getManagerById(int id);
+    ManagerDto getManagerById(Long id);
+
+    Manager getManagerByIdObj(Long id);
 
     Integer create(ManagerDto managerDto);
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/OrdersService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/OrdersService.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/OrdersService.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -3,4 +3,5 @@
 import mk.ukim.finki.db.distributorapp.model.dto.OrdersDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Customer;
+import mk.ukim.finki.db.distributorapp.model.entities.Manager;
 
 import java.util.List;
@@ -18,3 +19,7 @@
 
     void deleteById(Long id);
+
+    List<OrdersDto> findCurrentOrdersByCustomer(Customer customer);
+
+    List<OrdersDto> getNewOrdersByManager(Manager manager);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/RegionService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/RegionService.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/RegionService.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -17,4 +17,6 @@
     Integer edit(RegionDto regionDto);
 
+    RegionDto getRegionByCityId(Integer cityId);
+
     void deleteById(Integer id);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/UsersService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/UsersService.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/UsersService.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service;
 
+import mk.ukim.finki.db.distributorapp.model.dto.UserDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Users;
 
@@ -7,5 +8,9 @@
 public interface UsersService {
     List<Users> findAllUsers();
-
-
+    Users findUserById(Long id);
+    Users findUserByEmail(String email);
+    Integer edit(UserDto userDto);
+    Integer deleteUserById(Long id);
+    UserDto buildDto(Users user);
+    Users findUserByResetToken(String token);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/VehicleService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/VehicleService.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/VehicleService.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,6 +1,7 @@
 package mk.ukim.finki.db.distributorapp.service;
 
+import mk.ukim.finki.db.distributorapp.model.dto.VehicleBasicDto;
 import mk.ukim.finki.db.distributorapp.model.dto.VehicleDto;
-import mk.ukim.finki.db.distributorapp.model.entities.Warehouse;
+import mk.ukim.finki.db.distributorapp.model.entities.Manager;
 
 import java.util.List;
@@ -10,5 +11,5 @@
     List<VehicleDto> getAllVehicles();
 
-    List<VehicleDto> getVehiclesByWarehouse(Warehouse warehouse);
+    List<VehicleBasicDto> getVehiclesByWarehouse(Integer warehouseId);
 
     Integer create(VehicleDto vehicleDto);
@@ -17,3 +18,5 @@
 
     void deleteById(Integer id);
+
+    List<VehicleDto> getVehiclesByManager(Manager manager);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/WarehouseService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/WarehouseService.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/WarehouseService.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -3,4 +3,5 @@
 import mk.ukim.finki.db.distributorapp.model.dto.WarehouseDto;
 import mk.ukim.finki.db.distributorapp.model.entities.City;
+import mk.ukim.finki.db.distributorapp.model.entities.Manager;
 
 import java.util.List;
@@ -13,4 +14,6 @@
     WarehouseDto findById(Integer id);
 
+    WarehouseDto findByCityId(Integer id);
+
     Integer create(WarehouseDto warehouseDto);
 
@@ -18,3 +21,7 @@
 
     void deleteById(Integer id);
+
+    List<WarehouseDto> getInventoryByManager(Manager manager);
+
+    
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ArticleServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ArticleServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ArticleServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.ArticleDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Article;
@@ -10,10 +11,7 @@
 
 @Service
+@RequiredArgsConstructor
 public class ArticleServiceImpl implements ArticleService {
     private final ArticleRepository articleRepository;
-
-    public ArticleServiceImpl(ArticleRepository articleRepository) {
-        this.articleRepository = articleRepository;
-    }
 
     @Override
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ArticleUnitServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ArticleUnitServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ArticleUnitServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.ArticleUnitDto;
 import mk.ukim.finki.db.distributorapp.model.dto.UnitPriceDto;
@@ -17,4 +18,5 @@
 
 @Service
+@RequiredArgsConstructor
 public class ArticleUnitServiceImpl implements ArticleUnitService {
     private final ArticleUnitRepository articleUnitRepository;
@@ -22,11 +24,4 @@
     private final UnitPriceRepository unitPriceRepository;
     private final PriceRepository priceRepository;
-
-    public ArticleUnitServiceImpl(ArticleUnitRepository articleUnitRepository, WarehouseRepository warehouseRepository, UnitPriceRepository unitPriceRepository, PriceRepository priceRepository) {
-        this.articleUnitRepository = articleUnitRepository;
-        this.warehouseRepository = warehouseRepository;
-        this.unitPriceRepository = unitPriceRepository;
-        this.priceRepository = priceRepository;
-    }
 
     private List<ArticleUnitDto> buildDto(List<ArticleUnit> articleUnits) {
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CategoryServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CategoryServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CategoryServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.CategoryDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Category;
@@ -11,11 +12,8 @@
 
 @Service
+@RequiredArgsConstructor
 public class CategoryServiceImpl implements CategoryService {
     private final CategoryRepository categoryRepository;
 
-    public CategoryServiceImpl(CategoryRepository categoryRepository) {
-        this.categoryRepository = categoryRepository;
-
-    }
 
     private List<CategoryDto> buildDto(List<Category> categories) {
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CityServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CityServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CityServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,5 +1,7 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.CityDto;
+import mk.ukim.finki.db.distributorapp.model.dto.CityDtoRegister;
 import mk.ukim.finki.db.distributorapp.model.entities.City;
 import mk.ukim.finki.db.distributorapp.repository.CityRepository;
@@ -12,10 +14,7 @@
 
 @Service
+@RequiredArgsConstructor
 public class CityServiceImpl implements CityService {
     private final CityRepository cityRepository;
-
-    public CityServiceImpl(CityRepository cityRepository) {
-        this.cityRepository = cityRepository;
-    }
 
     private List<CityDto> buildDto(List<City> cities) {
@@ -34,4 +33,9 @@
 
     @Override
+    public List<City> listCitiesObj() {
+        return cityRepository.listAll();
+    }
+
+    @Override
     public List<CityDto> listCities() {
         List<City> cities = cityRepository.listAll();
@@ -40,8 +44,12 @@
 
     @Override
-    public CityDto getCityById(Long id) {
-        City city = cityRepository.findById(id).orElse(null);
+    public List<CityDtoRegister> findAllCityDtos() {
+        return this.cityRepository.findAllCityDtos();
+    }
 
-        assert city != null;
+    @Override
+    public CityDto getCityById(Integer id) {
+        City city = cityRepository.findById(id).orElseThrow();
+
         return new CityDto(
                 city.getCityId(),
@@ -53,5 +61,5 @@
 
     @Override
-    public Optional<City> getCityObjById(Long id){
+    public Optional<City> getCityObjById(Integer id){
         return this.cityRepository.findById(id);
     }
@@ -68,5 +76,5 @@
 
     @Override
-    public void deleteById(Long id) {
+    public void deleteById(Integer id) {
         this.cityRepository.deleteById(id);
     }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CustomerServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CustomerServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CustomerServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.CustomerDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Customer;
@@ -11,11 +12,8 @@
 
 @Service
+@RequiredArgsConstructor
 public class CustomerServiceImpl implements CustomerService {
 
     private final CustomerRepository customerRepository;
-
-    public CustomerServiceImpl(CustomerRepository customerRepository) {
-        this.customerRepository = customerRepository;
-    }
 
     private List<CustomerDto> buildDto(List<Customer> customers) {
@@ -65,4 +63,9 @@
 
     @Override
+    public Customer getCustomerObjById(Long id) {
+        return this.customerRepository.findById(id).get();
+    }
+
+    @Override
     public Integer create(CustomerDto customerDto) {
         return this.customerRepository.create(
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CustomerWeekdayServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CustomerWeekdayServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CustomerWeekdayServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.CustomerWeekdayDto;
 import mk.ukim.finki.db.distributorapp.model.entities.CustomerWeekday;
@@ -11,10 +12,8 @@
 
 @Service
+@RequiredArgsConstructor
 public class CustomerWeekdayServiceImpl implements CustomerWeekdayService {
     private final CustomerWeekdayRepository customerWeekdayRepository;
 
-    public CustomerWeekdayServiceImpl(CustomerWeekdayRepository customerWeekdayRepository) {
-        this.customerWeekdayRepository = customerWeekdayRepository;
-    }
 
     private List<CustomerWeekdayDto> buildDto(List<CustomerWeekday> customerWeekdays) {
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DeliveryServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DeliveryServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DeliveryServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,26 +1,18 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.DeliveryDto;
-import mk.ukim.finki.db.distributorapp.model.entities.Delivery;
-import mk.ukim.finki.db.distributorapp.model.entities.DeliveryStatus;
-import mk.ukim.finki.db.distributorapp.model.entities.Driver;
-import mk.ukim.finki.db.distributorapp.model.entities.Vehicle;
+import mk.ukim.finki.db.distributorapp.model.entities.*;
 import mk.ukim.finki.db.distributorapp.repository.DeliveryRepository;
 import mk.ukim.finki.db.distributorapp.service.DeliveryService;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDate;
-import java.time.LocalTime;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Optional;
 
 @Service
+@RequiredArgsConstructor
 public class DeliveryServiceImpl implements DeliveryService {
     private final DeliveryRepository deliveryRepository;
-
-    public DeliveryServiceImpl(DeliveryRepository deliveryRepository) {
-        this.deliveryRepository = deliveryRepository;
-    }
 
     private List<DeliveryDto> buildDto(List<Delivery> deliveries) {
@@ -118,3 +110,21 @@
         this.deliveryRepository.delete(del_id);
     }
+
+    @Override
+    public List<DeliveryDto> getAllNewDeliveriesByDriver(Driver driver) {
+        List<Delivery> deliveries = this.deliveryRepository.getNewDeliveriesByDriver(driver.getUserId());
+        return buildDto(deliveries);
+    }
+
+    @Override
+    public List<DeliveryDto> getCurrentDeliveriesByCustomer(Customer customer) {
+        List<Delivery> deliveries = this.deliveryRepository.getCurrentDeliveriesByCustomer(customer.getUserId());
+        return buildDto(deliveries);
+    }
+
+    @Override
+    public List<DeliveryDto> getCurrentDeliveriesByManager(Manager manager) {
+        List<Delivery> deliveries = this.deliveryRepository.getCurrentDeliveriesByManager(manager.getUserId());
+        return buildDto(deliveries);
+    }
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DeliveryStatusServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DeliveryStatusServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DeliveryStatusServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.DeliveryStatusDto;
 import mk.ukim.finki.db.distributorapp.model.entities.DeliveryStatus;
@@ -11,10 +12,8 @@
 
 @Service
+@RequiredArgsConstructor
 public class DeliveryStatusServiceImpl implements DeliveryStatusService {
     private final DeliveryStatusRepository deliveryStatusRepository;
 
-    public DeliveryStatusServiceImpl(DeliveryStatusRepository deliveryStatusRepository) {
-        this.deliveryStatusRepository = deliveryStatusRepository;
-    }
 
     private List<DeliveryStatusDto> buildDto(List<DeliveryStatus> deliveryStatuses) {
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DriverServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DriverServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DriverServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.DriverDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Driver;
@@ -11,10 +12,7 @@
 
 @Service
+@RequiredArgsConstructor
 public class DriverServiceImpl implements DriverService {
     private final DriverRepository driverRepository;
-
-    public DriverServiceImpl(DriverRepository driverRepository) {
-        this.driverRepository = driverRepository;
-    }
 
     private List<DriverDto> buildDto(List<Driver> drivers) {
@@ -60,4 +58,9 @@
 
     @Override
+    public Driver getDriverObjById(Long id) {
+        return this.driverRepository.findById(id).get();
+    }
+
+    @Override
     public Integer create(DriverDto driverDto) {
         return this.driverRepository.create(
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ManagerServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ManagerServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ManagerServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.ManagerDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Manager;
@@ -11,10 +12,8 @@
 
 @Service
+@RequiredArgsConstructor
 public class ManagerServiceImpl implements ManagerService {
     private final ManagerRepository managerRepository;
 
-    public ManagerServiceImpl(ManagerRepository managerRepository) {
-        this.managerRepository = managerRepository;
-    }
 
     private List<ManagerDto> buildDto(List<Manager> managers) {
@@ -43,5 +42,5 @@
 
     @Override
-    public ManagerDto getManagerById(int id) {
+    public ManagerDto getManagerById(Long id) {
         Manager manager = this.managerRepository.findById(id).get();
 
@@ -56,4 +55,8 @@
                 manager.getWarehouse().getCity().getCityName()
         );
+    }
+
+    public Manager getManagerByIdObj(Long id){
+        return this.managerRepository.findById(id).get();
     }
 
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ManufacturerServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ManufacturerServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ManufacturerServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.ManufacturerDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Manufacturer;
@@ -11,10 +12,8 @@
 
 @Service
+@RequiredArgsConstructor
 public class ManufacturerServiceImpl implements ManufacturerService {
     private final ManufacturerRepository manufacturerRepository;
 
-    public ManufacturerServiceImpl(ManufacturerRepository manufacturerRepository) {
-        this.manufacturerRepository = manufacturerRepository;
-    }
 
     private List<ManufacturerDto> buildDto(List<Manufacturer> manufacturers) {
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrderStatusServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrderStatusServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrderStatusServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.OrderStatusDto;
 import mk.ukim.finki.db.distributorapp.model.entities.OrderStatus;
@@ -11,10 +12,7 @@
 
 @Service
+@RequiredArgsConstructor
 public class OrderStatusServiceImpl implements OrderStatusService {
     private final OrderStatusRepository orderStatusRepository;
-
-    public OrderStatusServiceImpl(OrderStatusRepository orderStatusRepository) {
-        this.orderStatusRepository = orderStatusRepository;
-    }
 
     private List<OrderStatusDto> buildDto(List<OrderStatus> orderStatuses) {
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrdersServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrdersServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrdersServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,6 +1,8 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.OrdersDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Customer;
+import mk.ukim.finki.db.distributorapp.model.entities.Manager;
 import mk.ukim.finki.db.distributorapp.model.entities.Orders;
 import mk.ukim.finki.db.distributorapp.repository.OrdersRepository;
@@ -12,10 +14,8 @@
 
 @Service
+@RequiredArgsConstructor
 public class OrdersServiceImpl implements OrdersService {
     private final OrdersRepository ordersRepository;
 
-    public OrdersServiceImpl(OrdersRepository ordersRepository) {
-        this.ordersRepository = ordersRepository;
-    }
 
     private List<OrdersDto> buildDto(List<Orders> orders) {
@@ -117,3 +117,15 @@
         this.ordersRepository.deleteById(id);
     }
+
+    @Override
+    public List<OrdersDto> findCurrentOrdersByCustomer(Customer customer) {
+        List<Orders> orders = this.ordersRepository.getCurrentOrdersByCustomer(customer.getUserId());
+        return buildDto(orders);
+    }
+
+    @Override
+    public List<OrdersDto> getNewOrdersByManager(Manager manager) {
+        List<Orders> orders = this.ordersRepository.getNewOrdersByManager(manager.getUserId());
+        return buildDto(orders);
+    }
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/PriceServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/PriceServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/PriceServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.PriceDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Article;
@@ -12,10 +13,8 @@
 
 @Service
+@RequiredArgsConstructor
 public class PriceServiceImpl implements PriceService {
     private final PriceRepository priceRepository;
 
-    public PriceServiceImpl(PriceRepository priceRepository) {
-        this.priceRepository = priceRepository;
-    }
 
     private List<PriceDto> buildDto(List<Price> prices) {
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ProFormaServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ProFormaServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ProFormaServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.ProFormaDto;
 import mk.ukim.finki.db.distributorapp.model.entities.ProForma;
@@ -11,10 +12,8 @@
 
 @Service
+@RequiredArgsConstructor
 public class ProFormaServiceImpl implements ProFormaService {
     private final ProFormaRepository proFormaRepository;
 
-    public ProFormaServiceImpl(ProFormaRepository proFormaRepository) {
-        this.proFormaRepository = proFormaRepository;
-    }
 
     private List<ProFormaDto> buildDto(List<ProForma> proFormas) {
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ProFormaStatusServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ProFormaStatusServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ProFormaStatusServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.ProFormaStatusDto;
 import mk.ukim.finki.db.distributorapp.model.entities.ProFormaStatus;
@@ -11,10 +12,8 @@
 
 @Service
+@RequiredArgsConstructor
 public class ProFormaStatusServiceImpl implements ProFormaStatusService {
     private final ProFormaStatusRepository proFormaStatusRepository;
 
-    public ProFormaStatusServiceImpl(ProFormaStatusRepository proFormaStatusRepository) {
-        this.proFormaStatusRepository = proFormaStatusRepository;
-    }
 
     private List<ProFormaStatusDto> buildDto(List<ProFormaStatus> proFormaStatuses) {
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/RegionServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/RegionServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/RegionServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.RegionDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Region;
@@ -11,11 +12,7 @@
 
 @Service
+@RequiredArgsConstructor
 public class RegionServiceImpl implements RegionService {
-
     private final RegionRepository regionRepository;
-
-    public RegionServiceImpl(RegionRepository regionRepository) {
-        this.regionRepository = regionRepository;
-    }
 
     private List<RegionDto> buildDto(List<Region> regions) {
@@ -68,4 +65,9 @@
 
     @Override
+    public RegionDto getRegionByCityId(Integer cityId) {
+        return this.regionRepository.getRegionByCityId(cityId);
+    }
+
+    @Override
     public void deleteById(Integer id) {
         this.regionRepository.deleteById(id);
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,6 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.model.dto.UserDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Users;
 import mk.ukim.finki.db.distributorapp.repository.UsersRepository;
@@ -9,10 +11,24 @@
 
 @Service
+@RequiredArgsConstructor
 public class UsersServiceImpl implements UsersService {
 
     private final UsersRepository usersRepository;
 
-    public UsersServiceImpl(UsersRepository usersRepository) {
-        this.usersRepository = usersRepository;
+    public UserDto buildDto(Users user){
+        return new UserDto(
+                user.getUserId(),
+                user.getUsername(),
+                user.getUserSurname(),
+                user.getUserEmail(),
+                user.getUserMobile(),
+                user.getUserImage(),
+                user.getCity().getCityId(),
+                user.getCity().getCityName(),
+                user.getCity().getRegion().getRegionName(),
+                user.getUserRole(),
+                user.getUserResetToken(),
+                user.getUserResetTokenExpiry(),
+                user.getClazz_());
     }
 
@@ -21,3 +37,44 @@
         return this.usersRepository.listAll();
     }
+
+    @Override
+    public Users findUserById(Long id) {
+        return this.usersRepository.findById(id).get();
+    }
+
+    @Override
+    public Users findUserByEmail(String email) {
+        return this.usersRepository.findUserByUserEmailIgnoreCase(email).get();
+    }
+
+    @Override
+    public Integer edit(UserDto userDto) {
+        Users user = this.usersRepository.findUserByUserEmailIgnoreCase(userDto.getEmail()).get();
+        return this.usersRepository.edit(
+                userDto.getId(),
+                userDto.getFirstName(),
+                userDto.getLastName(),
+                user.getUserPassword(),
+                userDto.getEmail(),
+                userDto.getPhone(),
+                user.getUserSalt(),
+                user.getUserActive(),
+                userDto.getImage(),
+                userDto.getCityId(),
+                userDto.getRole().name(),
+                userDto.getRtoken(),
+                userDto.getRtoken_exp(),
+                userDto.getClazz_()
+        );
+    }
+
+    @Override
+    public Users findUserByResetToken(String token) {
+        return this.usersRepository.findUserByResetToken("'"+token+"'").get();
+    }
+
+    @Override
+    public Integer deleteUserById(Long id) {
+        return 0;
+    }
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/VehicleServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/VehicleServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/VehicleServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,7 +1,9 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.model.dto.VehicleBasicDto;
 import mk.ukim.finki.db.distributorapp.model.dto.VehicleDto;
+import mk.ukim.finki.db.distributorapp.model.entities.Manager;
 import mk.ukim.finki.db.distributorapp.model.entities.Vehicle;
-import mk.ukim.finki.db.distributorapp.model.entities.Warehouse;
 import mk.ukim.finki.db.distributorapp.repository.VehicleRepository;
 import mk.ukim.finki.db.distributorapp.service.VehicleService;
@@ -12,10 +14,8 @@
 
 @Service
+@RequiredArgsConstructor
 public class VehicleServiceImpl implements VehicleService {
+
     private final VehicleRepository vehicleRepository;
-
-    public VehicleServiceImpl(VehicleRepository vehicleRepository) {
-        this.vehicleRepository = vehicleRepository;
-    }
 
     private VehicleDto buildDto(Vehicle veh) {
@@ -57,7 +57,6 @@
 
     @Override
-    public List<VehicleDto> getVehiclesByWarehouse(Warehouse warehouse) {
-        List<Vehicle> vehicles = this.vehicleRepository.findAllByWarehouse(warehouse.getWarehouseId());
-        return buildDtoList(vehicles);
+    public List<VehicleBasicDto> getVehiclesByWarehouse(Integer warehouseId) {
+        return this.vehicleRepository.findAllByWarehouseDto(warehouseId);
     }
 
@@ -97,3 +96,10 @@
         this.vehicleRepository.delete(id);
     }
+    //------------------------------------------------------------------------------------------------------------------
+
+    @Override
+    public List<VehicleDto> getVehiclesByManager(Manager manager) {
+        List<Vehicle> vehicles = this.vehicleRepository.getVehiclesByManager(manager.getUserId());
+        return buildDtoList(vehicles);
+    }
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/WarehouseServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/WarehouseServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/WarehouseServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,6 +1,8 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.WarehouseDto;
 import mk.ukim.finki.db.distributorapp.model.entities.City;
+import mk.ukim.finki.db.distributorapp.model.entities.Manager;
 import mk.ukim.finki.db.distributorapp.model.entities.Warehouse;
 import mk.ukim.finki.db.distributorapp.repository.WarehouseRepository;
@@ -12,10 +14,7 @@
 
 @Service
+@RequiredArgsConstructor
 public class WarehouseServiceImpl implements WarehouseService {
     private final WarehouseRepository warehouseRepository;
-
-    public WarehouseServiceImpl(WarehouseRepository warehouseRepository) {
-        this.warehouseRepository = warehouseRepository;
-    }
 
     private List<WarehouseDto> buildDtoList(List<Warehouse> warehouses) {
@@ -61,4 +60,9 @@
 
     @Override
+    public WarehouseDto findByCityId(Integer id) {
+        return this.warehouseRepository.findWarehouseDtoByCityId(id);
+    }
+
+    @Override
     public Integer create(WarehouseDto warehouseDto) {
         return this.warehouseRepository.create(
@@ -81,3 +85,8 @@
         this.warehouseRepository.findById(id);
     }
+
+    @Override
+    public List<WarehouseDto> getInventoryByManager(Manager manager) {
+        return List.of();
+    }
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/WeekdayServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/WeekdayServiceImpl.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/WeekdayServiceImpl.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.db.distributorapp.service.impl;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.WeekdayDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Weekday;
@@ -11,10 +12,7 @@
 
 @Service
+@RequiredArgsConstructor
 public class WeekdayServiceImpl implements WeekdayService {
     private final WeekdayRepository weekdayRepository;
-
-    public WeekdayServiceImpl(WeekdayRepository weekdayRepository) {
-        this.weekdayRepository = weekdayRepository;
-    }
 
     private List<WeekdayDto> buildDto(List<Weekday> weekdays) {
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/AdminController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/AdminController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/AdminController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,115 @@
+package mk.ukim.finki.db.distributorapp.web;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.model.dto.*;
+import mk.ukim.finki.db.distributorapp.security.auth.AuthService;
+import mk.ukim.finki.db.distributorapp.service.*;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Controller
+@RequiredArgsConstructor
+@RequestMapping("/admin")
+public class AdminController {
+
+    private final AuthService authService;
+    private final CityService cityService;
+    private final WarehouseService warehouseService;
+    private final DriverService driverService;
+    private final VehicleService vehicleService;
+
+    @GetMapping({"/dashboard","/"})
+    public String getDashboard(Model model)
+    {
+        return "home/admin";
+    }
+
+    //    MANAGER CONTROLS:
+
+    @GetMapping("/create-manager")
+    public String createManager(Model model) {
+        List<CityDtoRegister> cities = this.cityService.findAllCityDtos();
+        model.addAttribute("cities", cities);
+        model.addAttribute("manager", new CreateManagerDto());
+        return "create-manager";
+    }
+
+    @PostMapping("/create-manager")
+    public String createManager(@ModelAttribute("manager") CreateManagerDto createManagerDto) throws Exception {
+        WarehouseDto wh = this.warehouseService.findByCityId(createManagerDto.getCity());
+        createManagerDto.setWarehouseId(wh.getId());
+        this.authService.createManager(createManagerDto);
+        return "redirect:/manager/all";
+    }
+
+    @GetMapping("/edit-manager")
+    public String editManager() {
+        return "edit-manager";
+    }
+
+    @GetMapping("/warehouse-by-city")
+    @ResponseBody
+    public WarehouseDto getWarehouseByCity(@RequestParam("cityId") Integer cityId) {
+        return this.warehouseService.findByCityId(cityId);
+    }
+
+    //    DRIVER CONTROLS:
+    @GetMapping("/create-driver")
+    public String createDriver(Model model) {
+        List<CityDtoRegister> cities = this.cityService.findAllCityDtos();
+        model.addAttribute("cities", cities);
+        model.addAttribute("driver", new CreateDriverDto());
+        return "create-driver";
+    }
+
+    @GetMapping("/vehicle-by-city")
+    @ResponseBody
+    public List<VehicleBasicDto> getVehicleByCity(@RequestParam("cityId") Integer cityId) {
+        WarehouseDto wh = this.warehouseService.findByCityId(cityId);
+        return this.vehicleService.getVehiclesByWarehouse(wh.getId());
+    }
+
+    @PostMapping("/create-driver")
+    public String createDriver(@ModelAttribute("driver") CreateDriverDto createDriverDto, @ModelAttribute("vehicle") VehicleDto vehicleDto) throws Exception {
+        this.authService.createDriver(createDriverDto);
+        return "all-drivers";
+    }
+
+    @GetMapping("/edit-driver/{id}")
+    public String editDriver(@PathVariable("id") Long id, Model model) {
+        DriverDto driver = this.driverService.findById(id);
+        model.addAttribute("driver", driver);
+        return "edit-driver";
+    }
+
+    @PostMapping("/edit-driver/{id}")
+    public String editDriver(@PathVariable("id") Long id, @ModelAttribute("driver") DriverDto driverDto, Model model) {
+        Integer res = this.driverService.edit(driverDto);
+        if (res == 1) {
+            model.addAttribute("edit-success", true);
+        } else {
+            model.addAttribute("edit-success", false);
+        }
+        return "all-drivers";
+    }
+
+
+    //    WAREHOUSE CONTROLS:
+
+    @GetMapping("/create-warehouse")
+    public String createWarehouse(Model model) {
+        List<CityDtoRegister> cities = this.cityService.findAllCityDtos();
+        model.addAttribute("warehouse", new WarehouseDto());
+        model.addAttribute("cities", cities);
+        return "create-warehouse";
+    }
+
+    @PostMapping("/create-warehouse")
+    public String createWarehouse(@ModelAttribute("warehouse") WarehouseDto warehouseDto, Model model) {
+        this.warehouseService.create(warehouseDto);
+        return "redirect:/warehouse";
+    }
+}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/ArticleController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/ArticleController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,43 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.ArticleDto;
-import mk.ukim.finki.db.distributorapp.service.ArticleService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/article")
-public class ArticleController {
-    private final ArticleService articleService;
-
-    public ArticleController(ArticleService articleService) {
-        this.articleService = articleService;
-    }
-
-    @GetMapping("/all")
-    ResponseEntity<List<ArticleDto>> getAllArticlesDto() {
-        List<ArticleDto> articles = articleService.getAllArticles();
-        return ResponseEntity.ok(articles);
-    }
-
-    @PutMapping("/add")
-    ResponseEntity<Integer> addArticle(@RequestBody ArticleDto articleDto) {
-        Integer res = this.articleService.create(articleDto);
-
-        return ResponseEntity.ok(res);
-    }
-
-    @PutMapping("/edit")
-    ResponseEntity<Integer> editArticle(@RequestBody ArticleDto articleDto) {
-        Integer res = this.articleService.editById(articleDto);
-        return ResponseEntity.ok(res);    }
-
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteArticle(@PathVariable Long id) {
-        this.articleService.deleteById(id);
-        return ResponseEntity.noContent().build();
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/ArticleUnitController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/ArticleUnitController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.ArticleUnitDto;
-import mk.ukim.finki.db.distributorapp.service.ArticleUnitService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/articleUnit")
-public class ArticleUnitController {
-    private final ArticleUnitService articleUnitService;
-
-    public ArticleUnitController(ArticleUnitService articleUnitService) {
-        this.articleUnitService = articleUnitService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<ArticleUnitDto>> getAllUnits() {
-        List<ArticleUnitDto> units = this.articleUnitService.getAllArticleUnits();
-        return ResponseEntity.ok(units);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addUnit(@RequestBody ArticleUnitDto articleUnitDto) {
-        Integer result = this.articleUnitService.create(articleUnitDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("edit")
-    public ResponseEntity<Integer> editUnit(@RequestBody ArticleUnitDto articleUnitDto) {
-        Integer result = this.articleUnitService.edit(articleUnitDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteUnit(@PathVariable Long id) {
-        this.articleUnitService.delete(id);
-        return ResponseEntity.noContent().build();
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/CategoryController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/CategoryController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.CategoryDto;
-import mk.ukim.finki.db.distributorapp.service.CategoryService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/category")
-public class CategoryController {
-    private final CategoryService categoryService;
-
-    public CategoryController(CategoryService categoryService) {
-        this.categoryService = categoryService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<CategoryDto>> getAllCategoriesDto() {
-        List<CategoryDto> categoryDtos = this.categoryService.listCategories();
-        return ResponseEntity.ok(categoryDtos);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addCategory(@RequestBody CategoryDto categoryDto) {
-        Integer result = this.categoryService.create(categoryDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("edit")
-    public ResponseEntity<Integer> editCategory(@RequestBody CategoryDto categoryDto) {
-        Integer result = this.categoryService.edit(categoryDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteCategory(@PathVariable Long id) {
-        this.categoryService.deleteById(id);
-        return ResponseEntity.noContent().build();
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/CityController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/CityController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,43 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.CityDto;
-import mk.ukim.finki.db.distributorapp.service.CityService;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/city")
-public class CityController {
-    private final CityService cityService;
-
-    public CityController(CityService cityService) {
-        this.cityService = cityService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<CityDto>> getAllCities() {
-        List<CityDto> cities = this.cityService.listCities();
-        return ResponseEntity.ok(cities);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addCity(@RequestBody CityDto CityDto) {
-        Integer result = this.cityService.create(CityDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editCity(@RequestBody CityDto CityDto) {
-        Integer result = this.cityService.edit(CityDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteCity(@PathVariable Long id) {
-        this.cityService.deleteById(id);
-        return new ResponseEntity<>(HttpStatus.OK);
-    }
-}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/CustomerController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/CustomerController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/CustomerController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,43 +1,37 @@
 package mk.ukim.finki.db.distributorapp.web;
 
-import mk.ukim.finki.db.distributorapp.model.dto.CustomerDto;
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.model.entities.Customer;
+import mk.ukim.finki.db.distributorapp.model.entities.Users;
 import mk.ukim.finki.db.distributorapp.service.CustomerService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
+import mk.ukim.finki.db.distributorapp.service.DeliveryService;
+import mk.ukim.finki.db.distributorapp.service.OrdersService;
+import mk.ukim.finki.db.distributorapp.service.UsersService;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
 
-import java.util.List;
+@Controller
+@RequiredArgsConstructor
+@RequestMapping(value = "/customer")
+public class CustomerController {
+    private final CustomerService customerService;
+    private final UsersService usersService;
+    private final OrdersService ordersService;
+    private final DeliveryService deliveryService;
 
-@RestController
-@RequestMapping("/customer")
-public class CustomerController {
-
-    private final CustomerService customerService;
-
-    public CustomerController(CustomerService customerService) {
-        this.customerService = customerService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<CustomerDto>> getAllCustomers() {
-        List<CustomerDto> result = customerService.findAllCustomers();
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addCustomer(@RequestBody CustomerDto customerDto) {
-        Integer result = this.customerService.create(customerDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editCustomer(@RequestBody CustomerDto customerDto) {
-        Integer result = this.customerService.edit(customerDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteCustomer(@PathVariable Long id) {
-        this.customerService.deleteById(id);
-        return ResponseEntity.noContent().build();
+    @GetMapping({"/dashboard","/"})
+    public String dashboard(Model model) {
+        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+        String userEmail = authentication.getName();
+        Users user = this.usersService.findUserByEmail(userEmail);
+        Customer customer = this.customerService.getCustomerObjById(user.getUserId());
+        model.addAttribute("customer", customer);
+        model.addAttribute("currentOrders", ordersService.findCurrentOrdersByCustomer(customer));
+        model.addAttribute("currentDeliveries", deliveryService.getCurrentDeliveriesByCustomer(customer));
+        return "home/customer";
     }
 }
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/CustomerWeekdayController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/CustomerWeekdayController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,28 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.CustomerWeekdayDto;
-import mk.ukim.finki.db.distributorapp.service.CustomerWeekdayService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/customerWeekday")
-public class CustomerWeekdayController {
-    private final CustomerWeekdayService customerWeekdayService;
-
-    public CustomerWeekdayController(CustomerWeekdayService customerWeekdayService) {
-        this.customerWeekdayService = customerWeekdayService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<CustomerWeekdayDto>> getAllWeekdays(){
-        List<CustomerWeekdayDto> weekdays = customerWeekdayService.getAllWeekdays();
-        return ResponseEntity.ok(weekdays);
-    }
-
-
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/DeliveryController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/DeliveryController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryDto;
-import mk.ukim.finki.db.distributorapp.service.DeliveryService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/delivery")
-public class DeliveryController {
-    private final DeliveryService deliveryService;
-
-    public DeliveryController(DeliveryService deliveryService) {
-        this.deliveryService = deliveryService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<DeliveryDto>> getAllDeliveries() {
-        List<DeliveryDto> deliveries = deliveryService.getAllDeliveries();
-        return ResponseEntity.ok(deliveries);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addDelivery(@RequestBody DeliveryDto DeliveryDto) {
-        Integer result = this.deliveryService.create(DeliveryDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editDelivery(@RequestBody DeliveryDto DeliveryDto) {
-        Integer result = this.deliveryService.edit(DeliveryDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteDelivery(@PathVariable Long id) {
-        this.deliveryService.deleteById(id);
-        return ResponseEntity.noContent().build();
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/DeliveryStatusController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/DeliveryStatusController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryStatusDto;
-import mk.ukim.finki.db.distributorapp.service.DeliveryStatusService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/dStatus")
-public class DeliveryStatusController {
-    private final DeliveryStatusService deliveryStatusService;
-
-    public DeliveryStatusController(DeliveryStatusService deliveryStatusService) {
-        this.deliveryStatusService = deliveryStatusService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<DeliveryStatusDto>> getAllDeliveryStatus() {
-        List<DeliveryStatusDto> statuses = this.deliveryStatusService.getAllDeliveryStatus();
-        return ResponseEntity.ok(statuses);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addDeliveryStatus(@RequestBody DeliveryStatusDto DeliveryStatusDto) {
-        Integer result = this.deliveryStatusService.create(DeliveryStatusDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editDeliveryStatus(@RequestBody DeliveryStatusDto DeliveryStatusDto) {
-        Integer result = this.deliveryStatusService.edit(DeliveryStatusDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteDeliveryStatus(@PathVariable Short id) {
-        this.deliveryStatusService.deleteById(id);
-        return ResponseEntity.noContent().build();
-    }
-}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/DriverController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/DriverController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/DriverController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,42 +1,43 @@
 package mk.ukim.finki.db.distributorapp.web;
 
-import mk.ukim.finki.db.distributorapp.model.dto.DriverDto;
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.model.entities.Driver;
+import mk.ukim.finki.db.distributorapp.model.entities.Users;
+import mk.ukim.finki.db.distributorapp.security.auth.AuthService;
+import mk.ukim.finki.db.distributorapp.service.CityService;
+import mk.ukim.finki.db.distributorapp.service.DeliveryService;
 import mk.ukim.finki.db.distributorapp.service.DriverService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
+import mk.ukim.finki.db.distributorapp.service.UsersService;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
 
-import java.util.List;
-
-@RestController
-@RequestMapping("/driver")
+@Controller
+@RequiredArgsConstructor
+@RequestMapping(value = "/driver")
 public class DriverController {
     private final DriverService driverService;
+    private final AuthService authService;
+    private final UsersService usersService;
+    private final DeliveryService deliveryService;
+    private final CityService cityService;
 
-    public DriverController(DriverService driverService) {
-        this.driverService = driverService;
+    @GetMapping("/all")
+    public String allDrivers(Model model) {
+//        List<DriverDto> drivers = driverService.getAllDrivers();
+//        model.addAttribute("drivers", drivers);
+        return "all-drivers";
     }
 
-    @GetMapping("/all")
-    public ResponseEntity<List<DriverDto>> getAllDrivers() {
-        List<DriverDto> drivers = driverService.getAllDrivers();
-        return ResponseEntity.ok(drivers);
+    @GetMapping({"/dashboard","/"})
+    public String dashboard(Model model) {
+        Users user = this.usersService.findUserByEmail(model.getAttribute("email").toString());
+        Driver driver = this.driverService.getDriverObjById(user.getUserId());
+        model.addAttribute("newDeliveries", deliveryService.getAllNewDeliveriesByDriver(driver));
+        model.addAttribute("doneDeliveries", deliveryService.getAllDeliveriesByDriver(driver));
+        return "home/driver";
     }
 
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addDriver(@RequestBody DriverDto driverDto) {
-        Integer result = this.driverService.create(driverDto);
-        return ResponseEntity.ok(result);
-    }
 
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editDriver(@RequestBody DriverDto driverDto) {
-        Integer result = this.driverService.edit(driverDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteDriver(@PathVariable Long id) {
-        this.driverService.deleteById(id);
-        return ResponseEntity.noContent().build();
-    }
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/HomeController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/HomeController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/HomeController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,18 +1,30 @@
 package mk.ukim.finki.db.distributorapp.web;
 
-import mk.ukim.finki.db.distributorapp.model.entities.Customer;
-import mk.ukim.finki.db.distributorapp.model.entities.Driver;
-import mk.ukim.finki.db.distributorapp.model.entities.Manager;
 import mk.ukim.finki.db.distributorapp.model.entities.Users;
+import mk.ukim.finki.db.distributorapp.service.*;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 
-@RestController
-@RequestMapping("/api/home")
+@Controller
+@RequestMapping({"/","/home"})
 public class HomeController {
+
+    private final DeliveryService deliveryService;
+    private final OrdersService ordersService;
+    private final VehicleService vehicleService;
+    private final WarehouseService warehouseService;
+    private final UsersService usersService;
+
+    public HomeController(DeliveryService deliveryService, OrdersService ordersService, VehicleService vehicleService, WarehouseService warehouseService, UsersService usersService) {
+        this.deliveryService = deliveryService;
+        this.ordersService = ordersService;
+        this.vehicleService = vehicleService;
+        this.warehouseService = warehouseService;
+        this.usersService = usersService;
+    }
 
     @GetMapping
@@ -22,21 +34,34 @@
         if (authentication == null || !authentication.isAuthenticated() || authentication.getPrincipal().equals("anonymousUser")) {
             model.addAttribute("userType", "Guest");
-            return "home";
+            return "authentication/login";
         }
 
-        Users user = (Users) authentication.getPrincipal();
+        String userEmail = authentication.getName();
+        if(userEmail.equals("superuser@admin.com")) {
+            return "redirect:/admin/dashboard";
+        }
+        Users user = this.usersService.findUserByEmail(userEmail);
+        System.out.println("Authentication principal: " + authentication.getPrincipal().getClass().getName());
+        System.out.println("Authorities: " + authentication.getAuthorities());
 
-        if (user instanceof Customer) {
-            model.addAttribute("userType", "Customer");
-            return "redirect:customer/home";
-        } else if (user instanceof Driver) {
-            model.addAttribute("userType", "Driver");
-            return "redirect:driver/home";
-        } else if (user instanceof Manager) {
-            model.addAttribute("userType", "Manager");
-            return "redirect:manager/home";
+        switch (user.getUserRole()) {
+            case ROLE_CUSTOMER -> {
+                return "redirect:/customer/dashboard";
+            }
+            case ROLE_DRIVER -> {
+                return "redirect:/driver/dashboard";
+            }
+            case ROLE_MANAGER -> {
+                return "redirect:/manager/dashboard";
+            }
         }
         model.addAttribute("userType", "Guest");
-        return "home";
+        return "authentication/login";
+    }
+
+    @GetMapping("/access_denied")
+    public String getAccessDeniedPage(Model model) {
+        model.addAttribute("error", "access_denied");
+        return "authentication/access_denied";
     }
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/ManagerController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/ManagerController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/ManagerController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,43 +1,41 @@
 package mk.ukim.finki.db.distributorapp.web;
 
-import mk.ukim.finki.db.distributorapp.model.dto.ManagerDto;
-import mk.ukim.finki.db.distributorapp.service.ManagerService;
-import org.springframework.http.ResponseEntity;
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.model.entities.Manager;
+import mk.ukim.finki.db.distributorapp.model.entities.Users;
+import mk.ukim.finki.db.distributorapp.service.*;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
 
 @Controller
-@RequestMapping("/manager")
+@RequestMapping(value = "/manager")
+@RequiredArgsConstructor
 public class ManagerController {
     private final ManagerService managerService;
 
-    public ManagerController(ManagerService managerService) {
-        this.managerService = managerService;
+    private final UsersService usersService;
+    private final VehicleService vehicleService;
+    private final OrdersService ordersService;
+    private final WarehouseService warehouseService;
+    private final DeliveryService deliveryService;
+
+
+    @GetMapping({"/dashboard","/"})
+    public String dashboard(Model model) {
+        Users user = this.usersService.findUserByEmail(model.getAttribute("email").toString());
+        Manager manager = this.managerService.getManagerByIdObj(user.getUserId());
+
+        model.addAttribute("currentInventory", warehouseService.getInventoryByManager(manager));
+        model.addAttribute("vehicleStatus", vehicleService.getVehiclesByManager(manager));
+        model.addAttribute("newOrders", ordersService.getNewOrdersByManager(manager));
+        model.addAttribute("currentDeliveries", deliveryService.getCurrentDeliveriesByManager(manager));
+        return "home/manager";
     }
 
     @GetMapping("/all")
-    public ResponseEntity<List<ManagerDto>> getAllManagers() {
-        List<ManagerDto> managers = managerService.getAllManagers();
-        return ResponseEntity.ok(managers);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addManager(@RequestBody ManagerDto ManagerDto) {
-        Integer result = this.managerService.create(ManagerDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editManager(@RequestBody ManagerDto ManagerDto) {
-        Integer result = this.managerService.edit(ManagerDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteManager(@PathVariable Long id) {
-        this.managerService.deleteById(id);
-        return ResponseEntity.noContent().build();
+    public String allManagers(Model model) {
+        return "all-managers";
     }
 }
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/ManufacturerController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/ManufacturerController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.ManufacturerDto;
-import mk.ukim.finki.db.distributorapp.service.ManufacturerService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/manufacturer")
-public class ManufacturerController {
-    private final ManufacturerService manufacturerService;
-
-    public ManufacturerController(ManufacturerService manufacturerService) {
-        this.manufacturerService = manufacturerService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<ManufacturerDto>> getAllManufacturers() {
-        List<ManufacturerDto> manufacturers = manufacturerService.getAllManufacturers();
-        return ResponseEntity.ok(manufacturers);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addManufacturer(@RequestBody ManufacturerDto ManufacturerDto) {
-        Integer result = this.manufacturerService.create(ManufacturerDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editManufacturer(@RequestBody ManufacturerDto ManufacturerDto) {
-        Integer result = this.manufacturerService.edit(ManufacturerDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteManufacturer(@PathVariable Long id) {
-        this.manufacturerService.deleteById(id);
-        return ResponseEntity.noContent().build();
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/OrderStatusController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/OrderStatusController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.OrderStatusDto;
-import mk.ukim.finki.db.distributorapp.service.OrderStatusService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/oStatus")
-public class OrderStatusController {
-    private final OrderStatusService orderStatusService;
-
-    public OrderStatusController(OrderStatusService orderStatusService) {
-        this.orderStatusService = orderStatusService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<OrderStatusDto>> getAllOrderStatus() {
-        List<OrderStatusDto> statuses = this.orderStatusService.getAllOrderStatus();
-        return ResponseEntity.ok(statuses);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addOrderStatus(@RequestBody OrderStatusDto OrderStatusDto) {
-        Integer result = this.orderStatusService.create(OrderStatusDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editOrderStatus(@RequestBody OrderStatusDto OrderStatusDto) {
-        Integer result = this.orderStatusService.edit(OrderStatusDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteOrderStatus(@PathVariable Short id) {
-        this.orderStatusService.deleteById(id);
-        return ResponseEntity.noContent().build();
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/OrdersController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/OrdersController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,43 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.OrdersDto;
-import mk.ukim.finki.db.distributorapp.service.OrdersService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/order")
-public class OrdersController {
-    private final OrdersService OrderService;
-
-    public OrdersController(OrdersService orderService) {
-        OrderService = orderService;
-    }
-
-
-    @GetMapping("/all")
-    public ResponseEntity<List<OrdersDto>> getAllOrders() {
-        List<OrdersDto> orders = OrderService.getAllOrders();
-        return ResponseEntity.ok(orders);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addOrders(@RequestBody OrdersDto OrdersDto) {
-        Integer result = this.OrderService.create(OrdersDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editOrders(@RequestBody OrdersDto OrdersDto) {
-        Integer result =this.OrderService.edit(OrdersDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteOrders(@PathVariable Long id) {
-        this.OrderService.deleteById(id);
-        return ResponseEntity.noContent().build();
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/PriceController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/PriceController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.PriceDto;
-import mk.ukim.finki.db.distributorapp.service.PriceService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/price")
-public class PriceController {
-    private final PriceService priceService;
-
-    public PriceController(PriceService priceService) {
-        this.priceService = priceService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<PriceDto>> getAllPrices() {
-        List<PriceDto> prices = this.priceService.getAllPrices();
-        return ResponseEntity.ok(prices);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addPrice(@RequestBody PriceDto PriceDto) {
-        Integer result = this.priceService.create(PriceDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editPrice(@RequestBody PriceDto PriceDto) {
-        Integer result = this.priceService.edit(PriceDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deletePrice(@PathVariable Integer id) {
-        this.priceService.deleteById(id);
-        return ResponseEntity.noContent().build();
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/ProFormaController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/ProFormaController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.ProFormaDto;
-import mk.ukim.finki.db.distributorapp.service.ProFormaService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/pForma")
-public class ProFormaController {
-    private final ProFormaService proFormaService;
-
-    public ProFormaController(ProFormaService proFormaService) {
-        this.proFormaService = proFormaService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<ProFormaDto>> getAllProFormas() {
-        List<ProFormaDto> proFormas = this.proFormaService.getAllProForma();
-        return ResponseEntity.ok(proFormas);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addProForma(@RequestBody ProFormaDto ProFormaDto) {
-        Integer result = this.proFormaService.create(ProFormaDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editProForma(@RequestBody ProFormaDto ProFormaDto) {
-        Integer result = this.proFormaService.edit(ProFormaDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteProForma(@PathVariable Long id) {
-        this.proFormaService.deleteById(id);
-        return ResponseEntity.noContent().build();
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/ProFormaStatusController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/ProFormaStatusController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.ProFormaStatusDto;
-import mk.ukim.finki.db.distributorapp.service.ProFormaStatusService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/pfStatus")
-public class ProFormaStatusController {
-    private final ProFormaStatusService proFormaStatusService;
-
-    public ProFormaStatusController(ProFormaStatusService proFormaStatusService) {
-        this.proFormaStatusService = proFormaStatusService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<ProFormaStatusDto>> getAllProFormaStatuss() {
-        List<ProFormaStatusDto> statuses = proFormaStatusService.getAllProFormaStatus();
-        return ResponseEntity.ok(statuses);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addProFormaStatus(@RequestBody ProFormaStatusDto ProFormaStatusDto) {
-        Integer result = this.proFormaStatusService.create(ProFormaStatusDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editProFormaStatus(@RequestBody ProFormaStatusDto ProFormaStatusDto) {
-        Integer result = this.proFormaStatusService.edit(ProFormaStatusDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteProFormaStatus(@PathVariable Short id) {
-        this.proFormaStatusService.deleteById(id);
-        return ResponseEntity.noContent().build();
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/RegionController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/RegionController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.RegionDto;
-import mk.ukim.finki.db.distributorapp.service.RegionService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/region")
-public class RegionController {
-    private final RegionService regionService;
-
-    public RegionController(RegionService regionService) {
-        this.regionService = regionService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<RegionDto>> getAllRegions() {
-        List<RegionDto> regions = this.regionService.getAllRegions();
-        return ResponseEntity.ok(regions);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addRegion(@RequestBody RegionDto RegionDto) {
-        Integer result = this.regionService.create(RegionDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editRegion(@RequestBody RegionDto RegionDto) {
-        Integer result = this.regionService.edit(RegionDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteRegion(@PathVariable Integer id) {
-        this.regionService.deleteById(id);
-        return ResponseEntity.noContent().build();
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/UsersController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/UsersController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,49 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.UserDto;
-import mk.ukim.finki.db.distributorapp.model.entities.Users;
-import mk.ukim.finki.db.distributorapp.service.UsersService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@RestController()
-@RequestMapping("/users")
-public class UsersController {
-
-    private final UsersService usersService;
-
-    public UsersController(UsersService usersService) {
-        this.usersService = usersService;
-    }
-
-    private List<UserDto> buildDto(List<mk.ukim.finki.db.distributorapp.model.entities.Users> users) {
-        List<UserDto> dtos = new ArrayList<>();
-        for (mk.ukim.finki.db.distributorapp.model.entities.Users user : users) {
-            UserDto dto = new UserDto(
-                    user.getUserId(),
-                    user.getUsername(),
-                    user.getUserSurname(),
-                    user.getUserEmail(),
-                    user.getUserMobile(),
-                    user.getUserImage(),
-                    user.getCity().getCityId(),
-                    user.getCity().getCityName(),
-                    user.getCity().getRegion().getRegionName()
-            );
-            dtos.add(dto);
-        }
-        return dtos;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<UserDto>> getAllUsers(){
-        List<Users> users = this.usersService.findAllUsers();
-        return ResponseEntity.ok(buildDto(users));
-    }
-
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/VehicleController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/VehicleController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.VehicleDto;
-import mk.ukim.finki.db.distributorapp.service.VehicleService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/vehicle")
-public class VehicleController {
-    private final VehicleService vehicleService;
-
-    public VehicleController(VehicleService vehicleService) {
-        this.vehicleService = vehicleService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<VehicleDto>> getAllVehicles() {
-        List<VehicleDto> vehicles = vehicleService.getAllVehicles();
-        return ResponseEntity.ok(vehicles);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addVehicle(@RequestBody VehicleDto VehicleDto) {
-        Integer result = this.vehicleService.create(VehicleDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editVehicle(@RequestBody VehicleDto VehicleDto) {
-        Integer result = this.vehicleService.edit(VehicleDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteVehicle(@PathVariable Integer id) {
-        this.vehicleService.deleteById(id);
-        return ResponseEntity.noContent().build();
-    }
-}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/WarehouseController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/WarehouseController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/WarehouseController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,42 +1,14 @@
 package mk.ukim.finki.db.distributorapp.web;
 
-import mk.ukim.finki.db.distributorapp.model.dto.WarehouseDto;
-import mk.ukim.finki.db.distributorapp.service.WarehouseService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
 
-import java.util.List;
-
-@RestController
-@RequestMapping("/warehouse")
+@Controller
+@RequestMapping(value = "/warehouse")
 public class WarehouseController {
-    private final WarehouseService warehouseService;
-
-    public WarehouseController(WarehouseService warehouseService) {
-        this.warehouseService = warehouseService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<WarehouseDto>> getAllWarehouses() {
-        List<WarehouseDto> warehouses = this.warehouseService.getAllWarehouses();
-        return ResponseEntity.ok(warehouses);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addWarehouse(@RequestBody WarehouseDto WarehouseDto) {
-        Integer result = this.warehouseService.create(WarehouseDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editWarehouse(@RequestBody WarehouseDto WarehouseDto) {
-        Integer result = this.warehouseService.edit(WarehouseDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteWarehouse(@PathVariable Integer id) {
-        this.warehouseService.deleteById(id);
-        return ResponseEntity.noContent().build();
+    @GetMapping("/create")
+    public String createWarehouse(){
+        return "create-warehouse";
     }
 }
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/web/WeekdayController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/WeekdayController.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web;
-
-import mk.ukim.finki.db.distributorapp.model.dto.WeekdayDto;
-import mk.ukim.finki.db.distributorapp.service.WeekdayService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/weekday")
-public class WeekdayController {
-    private final WeekdayService weekdayService;
-
-    public WeekdayController(WeekdayService weekdayService) {
-        this.weekdayService = weekdayService;
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<List<WeekdayDto>> getAllWeekdays(){
-        List<WeekdayDto> weekdays = weekdayService.getAllWeekdays();
-        return ResponseEntity.ok(weekdays);
-    }
-
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addWeekday(@RequestBody WeekdayDto weekdayDto){
-        Integer result = this.weekdayService.create(weekdayDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @PutMapping("/edit")
-    public ResponseEntity<Integer> editWeekday(@RequestBody WeekdayDto weekdayDto){
-        Integer result = this.weekdayService.edit(weekdayDto);
-        return ResponseEntity.ok(result);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteWeekday(@PathVariable Short id){
-        this.weekdayService.deleteById(id);
-        return ResponseEntity.noContent().build();
-    }
-}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestArticleController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestArticleController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestArticleController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,44 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.ArticleDto;
+import mk.ukim.finki.db.distributorapp.service.ArticleService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@CrossOrigin(origins = "http://localhost:4200")
+@RequestMapping("/rest/article")
+public class RestArticleController {
+    private final ArticleService articleService;
+
+    public RestArticleController(ArticleService articleService) {
+        this.articleService = articleService;
+    }
+
+    @GetMapping("/all")
+    ResponseEntity<List<ArticleDto>> getAllArticlesDto() {
+        List<ArticleDto> articles = articleService.getAllArticles();
+        return ResponseEntity.ok(articles);
+    }
+
+    @PutMapping("/add")
+    ResponseEntity<Integer> addArticle(@RequestBody ArticleDto articleDto) {
+        Integer res = this.articleService.create(articleDto);
+
+        return ResponseEntity.ok(res);
+    }
+
+    @PutMapping("/edit")
+    ResponseEntity<Integer> editArticle(@RequestBody ArticleDto articleDto) {
+        Integer res = this.articleService.editById(articleDto);
+        return ResponseEntity.ok(res);    }
+
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteArticle(@PathVariable Long id) {
+        this.articleService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestArticleUnitController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestArticleUnitController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestArticleUnitController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.ArticleUnitDto;
+import mk.ukim.finki.db.distributorapp.service.ArticleUnitService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/restarticleUnit")
+public class RestArticleUnitController {
+    private final ArticleUnitService articleUnitService;
+
+    public RestArticleUnitController(ArticleUnitService articleUnitService) {
+        this.articleUnitService = articleUnitService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<ArticleUnitDto>> getAllUnits() {
+        List<ArticleUnitDto> units = this.articleUnitService.getAllArticleUnits();
+        return ResponseEntity.ok(units);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addUnit(@RequestBody ArticleUnitDto articleUnitDto) {
+        Integer result = this.articleUnitService.create(articleUnitDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("edit")
+    public ResponseEntity<Integer> editUnit(@RequestBody ArticleUnitDto articleUnitDto) {
+        Integer result = this.articleUnitService.edit(articleUnitDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteUnit(@PathVariable Long id) {
+        this.articleUnitService.delete(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCategoryController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCategoryController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCategoryController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.CategoryDto;
+import mk.ukim.finki.db.distributorapp.service.CategoryService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/category")
+public class RestCategoryController {
+    private final CategoryService categoryService;
+
+    public RestCategoryController(CategoryService categoryService) {
+        this.categoryService = categoryService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<CategoryDto>> getAllCategoriesDto() {
+        List<CategoryDto> categoryDtos = this.categoryService.listCategories();
+        return ResponseEntity.ok(categoryDtos);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addCategory(@RequestBody CategoryDto categoryDto) {
+        Integer result = this.categoryService.create(categoryDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("edit")
+    public ResponseEntity<Integer> editCategory(@RequestBody CategoryDto categoryDto) {
+        Integer result = this.categoryService.edit(categoryDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteCategory(@PathVariable Long id) {
+        this.categoryService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCityController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCityController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCityController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,43 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.CityDto;
+import mk.ukim.finki.db.distributorapp.service.CityService;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/city")
+public class RestCityController {
+    private final CityService cityService;
+
+    public RestCityController(CityService cityService) {
+        this.cityService = cityService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<CityDto>> getAllCities() {
+        List<CityDto> cities = this.cityService.listCities();
+        return ResponseEntity.ok(cities);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addCity(@RequestBody CityDto CityDto) {
+        Integer result = this.cityService.create(CityDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editCity(@RequestBody CityDto CityDto) {
+        Integer result = this.cityService.edit(CityDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteCity(@PathVariable Integer id) {
+        this.cityService.deleteById(id);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCustomerController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCustomerController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCustomerController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,43 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.CustomerDto;
+import mk.ukim.finki.db.distributorapp.service.CustomerService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/customer")
+public class RestCustomerController {
+
+    private final CustomerService customerService;
+
+    public RestCustomerController(CustomerService customerService) {
+        this.customerService = customerService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<CustomerDto>> getAllCustomers() {
+        List<CustomerDto> result = customerService.findAllCustomers();
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addCustomer(@RequestBody CustomerDto customerDto) {
+        Integer result = this.customerService.create(customerDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editCustomer(@RequestBody CustomerDto customerDto) {
+        Integer result = this.customerService.edit(customerDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteCustomer(@PathVariable Long id) {
+        this.customerService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCustomerWeekdayController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCustomerWeekdayController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCustomerWeekdayController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,28 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.CustomerWeekdayDto;
+import mk.ukim.finki.db.distributorapp.service.CustomerWeekdayService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/customerWeekday")
+public class RestCustomerWeekdayController {
+    private final CustomerWeekdayService customerWeekdayService;
+
+    public RestCustomerWeekdayController(CustomerWeekdayService customerWeekdayService) {
+        this.customerWeekdayService = customerWeekdayService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<CustomerWeekdayDto>> getAllWeekdays(){
+        List<CustomerWeekdayDto> weekdays = customerWeekdayService.getAllWeekdays();
+        return ResponseEntity.ok(weekdays);
+    }
+
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestDeliveryController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestDeliveryController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestDeliveryController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.DeliveryDto;
+import mk.ukim.finki.db.distributorapp.service.DeliveryService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/delivery")
+public class RestDeliveryController {
+    private final DeliveryService deliveryService;
+
+    public RestDeliveryController(DeliveryService deliveryService) {
+        this.deliveryService = deliveryService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<DeliveryDto>> getAllDeliveries() {
+        List<DeliveryDto> deliveries = deliveryService.getAllDeliveries();
+        return ResponseEntity.ok(deliveries);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addDelivery(@RequestBody DeliveryDto DeliveryDto) {
+        Integer result = this.deliveryService.create(DeliveryDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editDelivery(@RequestBody DeliveryDto DeliveryDto) {
+        Integer result = this.deliveryService.edit(DeliveryDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteDelivery(@PathVariable Long id) {
+        this.deliveryService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestDeliveryStatusController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestDeliveryStatusController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestDeliveryStatusController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.DeliveryStatusDto;
+import mk.ukim.finki.db.distributorapp.service.DeliveryStatusService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/dStatus")
+public class RestDeliveryStatusController {
+    private final DeliveryStatusService deliveryStatusService;
+
+    public RestDeliveryStatusController(DeliveryStatusService deliveryStatusService) {
+        this.deliveryStatusService = deliveryStatusService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<DeliveryStatusDto>> getAllDeliveryStatus() {
+        List<DeliveryStatusDto> statuses = this.deliveryStatusService.getAllDeliveryStatus();
+        return ResponseEntity.ok(statuses);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addDeliveryStatus(@RequestBody DeliveryStatusDto DeliveryStatusDto) {
+        Integer result = this.deliveryStatusService.create(DeliveryStatusDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editDeliveryStatus(@RequestBody DeliveryStatusDto DeliveryStatusDto) {
+        Integer result = this.deliveryStatusService.edit(DeliveryStatusDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteDeliveryStatus(@PathVariable Short id) {
+        this.deliveryStatusService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestDriverController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestDriverController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestDriverController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,43 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.DriverDto;
+import mk.ukim.finki.db.distributorapp.service.DriverService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/driver")
+public class RestDriverController {
+    private final DriverService driverService;
+
+    public RestDriverController(DriverService driverService) {
+        this.driverService = driverService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<DriverDto>> getAllDrivers() {
+        List<DriverDto> drivers = driverService.getAllDrivers();
+        return ResponseEntity.ok(drivers);
+    }
+
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addDriver(@RequestBody DriverDto driverDto) {
+        Integer result = this.driverService.create(driverDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editDriver(@RequestBody DriverDto driverDto) {
+        Integer result = this.driverService.edit(driverDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteDriver(@PathVariable Long id) {
+        this.driverService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestManagerController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestManagerController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestManagerController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,47 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.ManagerDto;
+import mk.ukim.finki.db.distributorapp.service.ManagerService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/manager")
+public class RestManagerController {
+    private final ManagerService managerService;
+
+    public RestManagerController(ManagerService managerService) {
+        this.managerService = managerService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<ManagerDto>> getAllManagers() {
+        List<ManagerDto> managers = managerService.getAllManagers();
+        return ResponseEntity.ok(managers);
+    }
+
+    @GetMapping("/add")
+    public String addManager() {
+        return "create-manager";
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addManager(@RequestBody ManagerDto ManagerDto) {
+        Integer result = this.managerService.create(ManagerDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editManager(@RequestBody ManagerDto ManagerDto) {
+        Integer result = this.managerService.edit(ManagerDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteManager(@PathVariable Long id) {
+        this.managerService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestManufacturerController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestManufacturerController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestManufacturerController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.ManufacturerDto;
+import mk.ukim.finki.db.distributorapp.service.ManufacturerService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/manufacturer")
+public class RestManufacturerController {
+    private final ManufacturerService manufacturerService;
+
+    public RestManufacturerController(ManufacturerService manufacturerService) {
+        this.manufacturerService = manufacturerService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<ManufacturerDto>> getAllManufacturers() {
+        List<ManufacturerDto> manufacturers = manufacturerService.getAllManufacturers();
+        return ResponseEntity.ok(manufacturers);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addManufacturer(@RequestBody ManufacturerDto ManufacturerDto) {
+        Integer result = this.manufacturerService.create(ManufacturerDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editManufacturer(@RequestBody ManufacturerDto ManufacturerDto) {
+        Integer result = this.manufacturerService.edit(ManufacturerDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteManufacturer(@PathVariable Long id) {
+        this.manufacturerService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestOrderStatusController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestOrderStatusController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestOrderStatusController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.OrderStatusDto;
+import mk.ukim.finki.db.distributorapp.service.OrderStatusService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/oStatus")
+public class RestOrderStatusController {
+    private final OrderStatusService orderStatusService;
+
+    public RestOrderStatusController(OrderStatusService orderStatusService) {
+        this.orderStatusService = orderStatusService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<OrderStatusDto>> getAllOrderStatus() {
+        List<OrderStatusDto> statuses = this.orderStatusService.getAllOrderStatus();
+        return ResponseEntity.ok(statuses);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addOrderStatus(@RequestBody OrderStatusDto OrderStatusDto) {
+        Integer result = this.orderStatusService.create(OrderStatusDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editOrderStatus(@RequestBody OrderStatusDto OrderStatusDto) {
+        Integer result = this.orderStatusService.edit(OrderStatusDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteOrderStatus(@PathVariable Short id) {
+        this.orderStatusService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestOrdersController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestOrdersController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestOrdersController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,43 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.OrdersDto;
+import mk.ukim.finki.db.distributorapp.service.OrdersService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/order")
+public class RestOrdersController {
+    private final OrdersService OrderService;
+
+    public RestOrdersController(OrdersService orderService) {
+        OrderService = orderService;
+    }
+
+
+    @GetMapping("/all")
+    public ResponseEntity<List<OrdersDto>> getAllOrders() {
+        List<OrdersDto> orders = OrderService.getAllOrders();
+        return ResponseEntity.ok(orders);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addOrders(@RequestBody OrdersDto OrdersDto) {
+        Integer result = this.OrderService.create(OrdersDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editOrders(@RequestBody OrdersDto OrdersDto) {
+        Integer result =this.OrderService.edit(OrdersDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteOrders(@PathVariable Long id) {
+        this.OrderService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestPriceController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestPriceController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestPriceController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.PriceDto;
+import mk.ukim.finki.db.distributorapp.service.PriceService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/price")
+public class RestPriceController {
+    private final PriceService priceService;
+
+    public RestPriceController(PriceService priceService) {
+        this.priceService = priceService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<PriceDto>> getAllPrices() {
+        List<PriceDto> prices = this.priceService.getAllPrices();
+        return ResponseEntity.ok(prices);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addPrice(@RequestBody PriceDto PriceDto) {
+        Integer result = this.priceService.create(PriceDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editPrice(@RequestBody PriceDto PriceDto) {
+        Integer result = this.priceService.edit(PriceDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deletePrice(@PathVariable Integer id) {
+        this.priceService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestProFormaController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestProFormaController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestProFormaController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.ProFormaDto;
+import mk.ukim.finki.db.distributorapp.service.ProFormaService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/pForma")
+public class RestProFormaController {
+    private final ProFormaService proFormaService;
+
+    public RestProFormaController(ProFormaService proFormaService) {
+        this.proFormaService = proFormaService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<ProFormaDto>> getAllProFormas() {
+        List<ProFormaDto> proFormas = this.proFormaService.getAllProForma();
+        return ResponseEntity.ok(proFormas);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addProForma(@RequestBody ProFormaDto ProFormaDto) {
+        Integer result = this.proFormaService.create(ProFormaDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editProForma(@RequestBody ProFormaDto ProFormaDto) {
+        Integer result = this.proFormaService.edit(ProFormaDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteProForma(@PathVariable Long id) {
+        this.proFormaService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestProFormaStatusController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestProFormaStatusController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestProFormaStatusController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.ProFormaStatusDto;
+import mk.ukim.finki.db.distributorapp.service.ProFormaStatusService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/pfStatus")
+public class RestProFormaStatusController {
+    private final ProFormaStatusService proFormaStatusService;
+
+    public RestProFormaStatusController(ProFormaStatusService proFormaStatusService) {
+        this.proFormaStatusService = proFormaStatusService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<ProFormaStatusDto>> getAllProFormaStatuss() {
+        List<ProFormaStatusDto> statuses = proFormaStatusService.getAllProFormaStatus();
+        return ResponseEntity.ok(statuses);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addProFormaStatus(@RequestBody ProFormaStatusDto ProFormaStatusDto) {
+        Integer result = this.proFormaStatusService.create(ProFormaStatusDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editProFormaStatus(@RequestBody ProFormaStatusDto ProFormaStatusDto) {
+        Integer result = this.proFormaStatusService.edit(ProFormaStatusDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteProFormaStatus(@PathVariable Short id) {
+        this.proFormaStatusService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestRegionController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestRegionController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestRegionController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.RegionDto;
+import mk.ukim.finki.db.distributorapp.service.RegionService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/region")
+public class RestRegionController {
+    private final RegionService regionService;
+
+    public RestRegionController(RegionService regionService) {
+        this.regionService = regionService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<RegionDto>> getAllRegions() {
+        List<RegionDto> regions = this.regionService.getAllRegions();
+        return ResponseEntity.ok(regions);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addRegion(@RequestBody RegionDto RegionDto) {
+        Integer result = this.regionService.create(RegionDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editRegion(@RequestBody RegionDto RegionDto) {
+        Integer result = this.regionService.edit(RegionDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteRegion(@PathVariable Integer id) {
+        this.regionService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestUsersController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestUsersController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestUsersController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,53 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.UserDto;
+import mk.ukim.finki.db.distributorapp.model.entities.Users;
+import mk.ukim.finki.db.distributorapp.service.UsersService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RestController()
+@RequestMapping("/rest/users")
+public class RestUsersController {
+
+    private final UsersService usersService;
+
+    public RestUsersController(UsersService usersService) {
+        this.usersService = usersService;
+    }
+
+    private List<UserDto> buildDto(List<Users> users) {
+        List<UserDto> dtos = new ArrayList<>();
+        for (Users user : users) {
+            UserDto dto = new UserDto(
+                    user.getUserId(),
+                    user.getUsername(),
+                    user.getUserSurname(),
+                    user.getUserEmail(),
+                    user.getUserMobile(),
+                    user.getUserImage(),
+                    user.getCity().getCityId(),
+                    user.getCity().getCityName(),
+                    user.getCity().getRegion().getRegionName(),
+                    user.getUserRole(),
+                    user.getUserResetToken(),
+                    user.getUserResetTokenExpiry(),
+                    user.getClazz_()
+            );
+            dtos.add(dto);
+        }
+        return dtos;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<UserDto>> getAllUsers(){
+        List<Users> users = this.usersService.findAllUsers();
+        return ResponseEntity.ok(buildDto(users));
+    }
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestVehicleController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestVehicleController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestVehicleController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.VehicleDto;
+import mk.ukim.finki.db.distributorapp.service.VehicleService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/vehicle")
+public class RestVehicleController {
+    private final VehicleService vehicleService;
+
+    public RestVehicleController(VehicleService vehicleService) {
+        this.vehicleService = vehicleService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<VehicleDto>> getAllVehicles() {
+        List<VehicleDto> vehicles = vehicleService.getAllVehicles();
+        return ResponseEntity.ok(vehicles);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addVehicle(@RequestBody VehicleDto VehicleDto) {
+        Integer result = this.vehicleService.create(VehicleDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editVehicle(@RequestBody VehicleDto VehicleDto) {
+        Integer result = this.vehicleService.edit(VehicleDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteVehicle(@PathVariable Integer id) {
+        this.vehicleService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestWarehouseController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestWarehouseController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestWarehouseController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.WarehouseDto;
+import mk.ukim.finki.db.distributorapp.service.WarehouseService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/warehouse")
+public class RestWarehouseController {
+    private final WarehouseService warehouseService;
+
+    public RestWarehouseController(WarehouseService warehouseService) {
+        this.warehouseService = warehouseService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<WarehouseDto>> getAllWarehouses() {
+        List<WarehouseDto> warehouses = this.warehouseService.getAllWarehouses();
+        return ResponseEntity.ok(warehouses);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addWarehouse(@RequestBody WarehouseDto WarehouseDto) {
+        Integer result = this.warehouseService.create(WarehouseDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editWarehouse(@RequestBody WarehouseDto WarehouseDto) {
+        Integer result = this.warehouseService.edit(WarehouseDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteWarehouse(@PathVariable Integer id) {
+        this.warehouseService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestWeekdayController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestWeekdayController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestWeekdayController.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import mk.ukim.finki.db.distributorapp.model.dto.WeekdayDto;
+import mk.ukim.finki.db.distributorapp.service.WeekdayService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rest/weekday")
+public class RestWeekdayController {
+    private final WeekdayService weekdayService;
+
+    public RestWeekdayController(WeekdayService weekdayService) {
+        this.weekdayService = weekdayService;
+    }
+
+    @GetMapping("/all")
+    public ResponseEntity<List<WeekdayDto>> getAllWeekdays(){
+        List<WeekdayDto> weekdays = weekdayService.getAllWeekdays();
+        return ResponseEntity.ok(weekdays);
+    }
+
+    @PutMapping("/add")
+    public ResponseEntity<Integer> addWeekday(@RequestBody WeekdayDto weekdayDto){
+        Integer result = this.weekdayService.create(weekdayDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @PutMapping("/edit")
+    public ResponseEntity<Integer> editWeekday(@RequestBody WeekdayDto weekdayDto){
+        Integer result = this.weekdayService.edit(weekdayDto);
+        return ResponseEntity.ok(result);
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public ResponseEntity<Void> deleteWeekday(@PathVariable Short id){
+        this.weekdayService.deleteById(id);
+        return ResponseEntity.noContent().build();
+    }
+}
Index: backend/src/main/resources/application.properties
===================================================================
--- backend/src/main/resources/application.properties	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ backend/src/main/resources/application.properties	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -1,3 +1,3 @@
 spring.application.name=DistributorApp
 
-spring.profiles.active=prod
+spring.profiles.active=test
Index: backend/src/main/resources/templates/all-drivers.html
===================================================================
--- backend/src/main/resources/templates/all-drivers.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/all-drivers.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+
+</body>
+</html>
Index: backend/src/main/resources/templates/all-managers.html
===================================================================
--- backend/src/main/resources/templates/all-managers.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/all-managers.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+
+</body>
+</html>
Index: backend/src/main/resources/templates/authentication/access_denied.html
===================================================================
--- backend/src/main/resources/templates/authentication/access_denied.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/authentication/access_denied.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+Error
+</body>
+</html>
Index: backend/src/main/resources/templates/authentication/changePass.html
===================================================================
--- backend/src/main/resources/templates/authentication/changePass.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/authentication/changePass.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Change Password</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+</head>
+<body>
+<div class="change-password-container">
+    <h1 class="text-center mb-4">Change Password</h1>
+    <form method="POST" th:action="@{/rest/auth/changePass}">
+        <div class="form-group">
+            <label for="oldPassword" class="form-label">Old Password</label>
+            <input type="password" class="form-control" id="oldPassword" name="oldPassword" required>
+        </div>
+
+        <div class="form-group">
+            <label for="newPassword" class="form-label">New Password</label>
+            <input type="password" class="form-control" id="newPassword" name="newPassword" required>
+        </div>
+
+        <div class="form-group">
+            <label for="confirmPassword" class="form-label">Confirm Password</label>
+            <input type="password" class="form-control" id="confirmPassword" name="confirmPassword" required>
+        </div>
+
+        <button type="submit" class="btn btn-primary">Change Password</button>
+    </form>
+
+    <div th:if="${error}" class="alert alert-danger mt-3" th:text="${error}"></div>
+
+    <div th:if="${success}" class="alert alert-success mt-3" th:text="${success}"></div>
+</div>
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+</body>
+</html>
Index: backend/src/main/resources/templates/authentication/login.html
===================================================================
--- backend/src/main/resources/templates/authentication/login.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/authentication/login.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Login</title>
+    <link rel="stylesheet" th:href="@{/css/style.css}">
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+</head>
+<body>
+<div th:replace="~{fragments/header :: header}"></div>
+<main>
+    <div class="container">
+        <form class="form-signin mt-xl-5" method="post" th:action="@{/auth/login}">
+            <h2 class="form-signin-heading">Sign in</h2>
+            <p>
+                <!--                <label for="username" class="sr-only">Email</label>-->
+                <label>
+                    <input type="email" name="email" placeholder="Email" required>
+                </label>
+            </p>
+            <p>
+                <!--                <label for="password" class="sr-only">Password</label>-->
+                <label>
+                    <input type="password" name="password" placeholder="Password" required>
+                </label>
+            </p>
+
+            <div th:if="${param.error}" th:text="${param.error}" class="text-danger">
+                <p style="color: red;">Invalid username or password</p>
+            </div>
+
+            <div class="row">
+                <div class="col-md-3">
+                    <button id="submit" class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-3">
+                    <a href="/reset-password/request" class="btn btn-lg btn-block btn-light">Change your password</a>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-3">
+                    <a href="/auth/register" class="btn btn-lg btn-block btn-light">Register here</a>
+                </div>
+            </div>
+        </form>
+    </div>
+</main>
+<div th:replace="~{fragments/footer :: footer}"></div>
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+</body>
+</html>
Index: backend/src/main/resources/templates/authentication/register.html
===================================================================
--- backend/src/main/resources/templates/authentication/register.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/authentication/register.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Register</title>
+    <link rel="stylesheet" th:href="@{/css/style.css}">
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+</head>
+<body>
+<div th:replace="~{fragments/header :: header}"></div>
+<main>
+    <div class="container mb-4">
+        <form class="form-signin mt-xl-5" th:action="@{/auth/register}" method="post">
+            <h2 class="form-signin-heading">Register as a Customer</h2>
+            <div class="container">
+                <div class="row">
+                    <div class="col-md-6">
+                        <div class="form-group">
+                            <label for="email" class="sr-only">Email: </label>
+                            <input type="email" id="email" name="email" class="form-control"
+                                   placeholder="Email" required="" autofocus="">
+                        </div>
+                    </div>
+                    <div class="col-md-6">
+                        <div class="form-group">
+                            <label for="compName" class="sr-only">Company Name:</label>
+                            <input type="text" id="compName" name="compName" class="form-control"
+                            placeholder="Company Name" required="" autofocus="">
+                        </div>
+                    </div>
+
+                </div>
+                <div class="row">
+                    <div class="col-md-6">
+                        <div class="form-group">
+                            <label for="password" class="sr-only">Password: </label>
+                            <input type="password" id="password" name="password" class="form-control"
+                                   placeholder="Password" required="" autofocus="">
+                        </div>
+                    </div>
+                    <div class="col-md-6">
+                        <div class="form-group">
+                            <label for="edb" class="sr-only">EDB: </label>
+                            <input type="text" id="edb" name="edb" class="form-control"
+                                   placeholder="Email" required="" autofocus="">
+                        </div>
+                    </div>
+                </div>
+                <div class="row">
+                    <div class="col-md-6">
+                        <div class="form-group">
+                            <label for="repeatedPassword" class="sr-only">Repeat Password: </label>
+                            <input type="password" id="repeatedPassword" name="repeatedPassword" class="form-control"
+                                   placeholder="Repeat Password" required="" autofocus="">
+                        </div>
+                    </div>
+                    <div class="col-md-6">
+                        <div class="form-group">
+                            <label for="address" class="sr-only">Address: </label>
+                            <input type="text" id="address" name="address" class="form-control"
+                                   placeholder="Address" required="" autofocus="">
+                        </div>
+                    </div>
+                </div>
+                <div class="row">
+                    <div class="col-md-6">
+                        <div class="form-group">
+                            <label for="name" class="sr-only">First Name: </label>
+                            <input type="text" id="name" name="name" class="form-control"
+                                   placeholder="First Name" required="" autofocus="">
+                        </div>
+                    </div>
+                    <div class="col-md-6">
+                        <div class="form-group">
+                            <label for="repImage" class="sr-only">Representative Image: </label>
+                            <input type="file" id="repImage" name="repImage" class="form-control" accept="image/*">
+                        </div>
+                    </div>
+                </div>
+                <div class="row">
+                    <div class="col-md-6">
+                        <div class="form-group">
+                            <label for="surname" class="sr-only">Last Name: </label>
+                            <input type="text" id="surname" name="surname" class="form-control"
+                                   placeholder="Last Name" required="" autofocus="">
+                        </div>
+                    </div>
+                </div>
+                <div class="row">
+                    <div class="col-md-6">
+                        <div class="form-group">
+                            <label for="mobile" class="sr-only">Mobile: </label>
+                            <input type="tel" id="mobile" name="mobile" class="form-control"
+                                   placeholder="Mobile" required="" autofocus="">
+                        </div>
+                    </div>
+                </div>
+                <div class="row">
+                    <div class="col-md-6">
+                        <div class="form-group">
+                            <label for="profileImage" class="sr-only">Profile Picture: </label>
+                            <input type="file" id="profileImage" name="profileImage" class="form-control" accept="image/*">
+                        </div>
+                    </div>
+                </div>
+                <div class="row">
+                    <div class="col-md-6">
+                        <div class="form-group">
+                            <label for="city" class="sr-only">City the company is located in: </label>
+                            <select id="city" name="city" required class="form-control">
+                                <option value="" disabled selected>Select your city</option>
+                                <option th:each="city : ${cities}"
+                                        th:value="${city.getId()}"
+                                        th:text="${city.getName()}">
+                                </option>
+                            </select>
+                        </div>
+                    </div>
+                </div>
+                <div class="row">
+                    <div class="col-md-6">
+                        <div class="form-group">
+                            <button type="submit" class="btn btn-primary mt-3">Register</button>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </form>
+    </div>
+</main>
+<div th:replace="~{fragments/footer :: footer}"></div>
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+</body>
+</html>
Index: backend/src/main/resources/templates/authentication/reset-password-request.html
===================================================================
--- backend/src/main/resources/templates/authentication/reset-password-request.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/authentication/reset-password-request.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Reset Password</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+    <style>
+        body {
+            background-color: #f8f9fa;
+        }
+        .reset-password-container {
+            max-width: 500px;
+            margin: 50px auto;
+            padding: 20px;
+            background: #fff;
+            border-radius: 8px;
+            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
+        }
+        .btn-primary {
+            width: 100%;
+            padding: 10px;
+        }
+    </style>
+</head>
+<body>
+<div class="reset-password-container">
+    <h1 class="text-center mb-4">Reset Password</h1>
+    <form th:action="@{/rest/auth/reset-password-request}" method="post">
+        <div class="form-group">
+            <label for="email" class="form-label">Email</label>
+            <input type="email" class="form-control" id="email" name="email" required>
+        </div>
+
+        <div class="form-group">
+            <button type="submit" class="btn btn-primary">Submit</button>
+            <a href="/static" class="btn btn-secondary mt-2 w-100">Cancel</a>
+        </div>
+    </form>
+    <div th:if="${error}" class="alert alert-danger mt-3" th:text="${error}"></div>
+</div>
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+</body>
+</html>
Index: backend/src/main/resources/templates/authentication/reset-password.html
===================================================================
--- backend/src/main/resources/templates/authentication/reset-password.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/authentication/reset-password.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Reset Password</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+    <style>
+        body {
+            background-color: #f8f9fa;
+        }
+        .reset-password-container {
+            max-width: 500px;
+            margin: 50px auto;
+            padding: 20px;
+            background: #fff;
+            border-radius: 8px;
+            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
+        }
+        .btn-primary {
+            width: 100%;
+            padding: 10px;
+        }
+    </style>
+</head>
+<body>
+<div class="reset-password-container">
+    <h1 class="text-center mb-4">Reset Password</h1>
+    <form th:action="@{/reset-password}" method="post">
+        <input type="hidden" name="token" th:value="${token}">
+
+        <div class="form-group">
+            <label for="newPassword" class="form-label">New Password</label>
+            <input type="password" class="form-control" id="newPassword"
+                   name="newPassword" placeholder="New Password" required>
+        </div>
+
+        <div class="form-group">
+            <label for="confirmPassword" class="form-label">Confirm Password</label>
+            <input type="password" class="form-control" id="confirmPassword"
+                   name="confirmPassword" placeholder="Confirm Password" required>
+        </div>
+
+        <button type="submit" class="btn btn-primary">Reset Password</button>
+    </form>
+
+    <div th:if="${error}" class="alert alert-danger mt-3" th:text="${error}"></div>
+
+    <div th:if="${success}" class="alert alert-success mt-3" th:text="${success}"></div>
+</div>
+</body>
+</html>
Index: backend/src/main/resources/templates/create-driver.html
===================================================================
--- backend/src/main/resources/templates/create-driver.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/create-driver.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,153 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Create a Driver</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+</head>
+<body>
+<div th:replace="~{fragments/navbar :: navbar}"></div>
+<div class="container mb-4">
+    <form class="form-signin mt-xl-5" th:action="@{/admin/create-driver}" method="post" th:object="${driver}">
+        <h2 class="form-signin-heading">Create a Driver</h2>
+        <div class="container">
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="email" class="sr-only">Email: </label>
+                        <input type="email" id="email" name="email" class="form-control"
+                               placeholder="Email address" required="" autofocus="">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="password" class="sr-only">Password:</label>
+                        <input type="password" id="password" name="password" class="form-control"
+                               placeholder="Password" required="" autofocus="">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="repeatedPassword" class="sr-only">Repeat Password: </label>
+                        <input type="password" id="repeatedPassword" name="repeatedPassword" class="form-control"
+                               placeholder="Repeat Password" required="" autofocus="">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="name" class="sr-only">First Name: </label>
+                        <input type="text" id="name" name="name" class="form-control"
+                               placeholder="First Name" required="" autofocus="">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="surname" class="sr-only">Last Name: </label>
+                        <input type="text" id="surname" name="surname" class="form-control"
+                               placeholder="Last Name" required="" autofocus="">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="mobile" class="sr-only">Mobile: </label>
+                        <input type="tel" id="mobile" name="mobile" class="form-control"
+                               placeholder="Mobile" required="" autofocus="">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="profileImage" class="sr-only">Profile Picture: </label>
+                        <input type="file" id="profileImage" name="profileImage" class="form-control" accept="image/*">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="city" class="sr-only">City the company is located in: </label>
+                        <select id="city" name="city" required class="form-control">
+                            <option value="" disabled selected>Select your city</option>
+                            <option th:each="city : ${cities}"
+                                    th:value="${city.getId()}"
+                                    th:text="${city.getName()}">
+                            </option>
+                        </select>
+                    </div>
+                </div>
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="vehicle" class="sr-only">Assign a vehicle to the driver: </label>
+                        <select id="vehicle" name="vehicle" required class="form-control">
+                            <option value="" disabled selected>Choose a vehicle</option>
+                        </select>
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <button type="submit" class="btn btn-primary mt-3">Submit</button>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </form>
+</div>
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+<script>
+    document.addEventListener("DOMContentLoaded", function () {
+        var citySelect = document.getElementById("city");
+        var vehicleSelect = document.getElementById("vehicle");
+
+        if (citySelect) {
+            citySelect.addEventListener("change", function () {
+                let selectedCityId = this.value;
+                console.log("City changed, value:", selectedCityId);
+
+                // Clear current vehicle options
+                vehicleSelect.innerHTML = '<option value="">Select a vehicle</option>';
+
+                // Only fetch if a valid city is selected
+                if (selectedCityId) {
+                    fetch("/admin/vehicle-by-city?cityId=" + selectedCityId)
+                        .then(response => {
+                            if (!response.ok) {
+                                throw new Error("Network response was not ok " + response.statusText);
+                            }
+                            return response.json();
+                        })
+                        .then(data => {
+                            console.log("Fetched vehicles:", data);
+                            // Populate the vehicles dropdown
+                            data.forEach(function (vehicle) {
+                                // Adjust property names as needed – here we assume:
+                                // - vehicle.id: the vehicle's unique id
+                                // - vehicle.name: the vehicle's display name (or plate)
+                                var option = document.createElement("option");
+                                option.value = vehicle.id;
+                                option.text = vehicle.plateNumber;  // or use another property like vehicle.plate if available
+                                vehicleSelect.appendChild(option);
+                            });
+                        })
+                        .catch(error => {
+                            console.error("Fetch error:", error);
+                        });
+                }
+            });
+        }
+    });
+</script>
+</body>
+</html>
Index: backend/src/main/resources/templates/create-manager.html
===================================================================
--- backend/src/main/resources/templates/create-manager.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/create-manager.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,136 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Create a Manager</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+</head>
+<body>
+<div th:replace="~{fragments/navbar :: navbar}"></div>
+<div class="container mb-4">
+    <form class="form-signin mt-xl-5" th:action="@{/admin/create-manager}" method="post" th:object="${manager}">
+        <h2 class="form-signin-heading">Create a Manager</h2>
+        <div class="container">
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="email" class="sr-only">Email: </label>
+                        <input type="email" id="email" name="email" class="form-control"
+                               placeholder="Email address" required="" autofocus="">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="password" class="sr-only">Password:</label>
+                        <input type="password" id="password" name="password" class="form-control"
+                               placeholder="Password" required="" autofocus="">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="repeatedPassword" class="sr-only">Repeat Password: </label>
+                        <input type="password" id="repeatedPassword" name="repeatedPassword" class="form-control"
+                               placeholder="Repeat Password" required="" autofocus="">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="name" class="sr-only">First Name: </label>
+                        <input type="text" id="name" name="name" class="form-control"
+                               placeholder="First Name" required="" autofocus="">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="surname" class="sr-only">Last Name: </label>
+                        <input type="text" id="surname" name="surname" class="form-control"
+                               placeholder="Last Name" required="" autofocus="">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="mobile" class="sr-only">Mobile: </label>
+                        <input type="tel" id="mobile" name="mobile" class="form-control"
+                               placeholder="Mobile" required="" autofocus="">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="profileImage" class="sr-only">Profile Picture: </label>
+                        <input type="file" id="profileImage" name="profileImage" class="form-control" accept="image/*">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="city" class="sr-only">City the company is located in: </label>
+                        <select id="city" name="city" required class="form-control">
+                            <option value="" disabled selected>Select your city</option>
+                            <option th:each="city:${cities}"
+                                    th:value="${city.getId()}"
+                                    th:text="${city.getName()}">
+                            </option>
+                        </select>
+                        <label for="warehouse"> Warehouse:</label>
+                        <input id="warehouse" type="text" name="warehouse" class="form-control" readonly/>
+                        <input type="hidden" id="warehouseId" name="warehouse">
+                    </div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <button type="submit" class="btn btn-primary mt-3">Submit</button>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </form>
+</div>
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+<script>
+    document.addEventListener("DOMContentLoaded", function () {
+        var citySelect = document.getElementById("city");
+        var warehouseField = document.getElementById("warehouse");
+        var warehouseId = document.getElementById("warehouseId");
+
+        if (citySelect) {
+            citySelect.addEventListener("change", function () {
+                let selectedCityId = this.value;
+                console.log("City changed, value:", selectedCityId);
+
+                fetch("/admin/warehouse-by-city?cityId=" + selectedCityId)
+                    .then(response => {
+                        if (!response.ok) {
+                            throw new Error("Network response was not ok " + response.statusText);
+                        }
+                        return response.json();
+                    })
+                    .then(data => {
+                        console.log("Fetched warehouse:", data);
+                        warehouseField.value = data.address || "";
+                        warehouseId.value = data.id;
+                    })
+                    .catch(error => {
+                        console.error("Fetch error:", error);
+                    });
+            });
+        }
+    });
+</script>
+
+</body>
+</html>
Index: backend/src/main/resources/templates/create-warehouse.html
===================================================================
--- backend/src/main/resources/templates/create-warehouse.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/create-warehouse.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Create Warehouse</title>
+  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+</head>
+<body>
+<div th:replace="~{fragments/navbar :: navbar}"></div>
+
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+</body>
+</html>
Index: backend/src/main/resources/templates/edit-driver.html
===================================================================
--- backend/src/main/resources/templates/edit-driver.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/edit-driver.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+</head>
+<body>
+<div th:replace="~{fragments/navbar :: navbar}"></div>
+
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+</body>
+</html>
Index: backend/src/main/resources/templates/edit-manager.html
===================================================================
--- backend/src/main/resources/templates/edit-manager.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/edit-manager.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+<div th:replace="~{fragments/navbar :: navbar}"></div>
+
+</body>
+</html>
Index: backend/src/main/resources/templates/edit-warehouse.html
===================================================================
--- backend/src/main/resources/templates/edit-warehouse.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/edit-warehouse.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Edit Warehouse</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+</head>
+<body>
+<div th:replace="~{fragments/navbar :: navbar}"></div>
+
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+</body>
+</html>
Index: backend/src/main/resources/templates/fragments/navbar.html
===================================================================
--- backend/src/main/resources/templates/fragments/navbar.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/fragments/navbar.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org"
+      xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+</head>
+<body>
+<nav th:fragment="navbar" class="navbar navbar-expand-lg navbar-light bg-light">
+    <div class="container-fluid">
+        <a class="navbar-brand" th:href="@{/}">Distributor App</a>
+        <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
+                data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false"
+                aria-label="Toggle navigation">
+            <span class="navbar-toggler-icon"></span>
+        </button>
+        <div class="collapse navbar-collapse" id="navbarNav">
+            <ul class="navbar-nav me-auto">
+                <li class="nav-item">
+                    <a class="nav-link" href="/">Home</a>
+                </li>
+
+                <!--    Links for authenticated users:    -->
+                <li class="nav-item" sec:authorize="isAuthenticated()">
+                    <a class="nav-link" href="/">Profile</a>
+                </li>
+
+                <!--    Links for specific roles:    -->
+                <li class="nav-item" sec:authorize="hasRole('CUSTOMER')">
+                    <a class="nav-link" href="/customer/dashboard">Customer Dashboard</a>
+                </li>
+                <li class="nav-item" sec:authorize="hasRole('MANAGER')">
+                    <a class="nav-link" href="/manager/dashboard">Manager Dashboard</a>
+                </li>
+                <li class="nav-item" sec:authorize="hasRole('DRIVER')">
+                    <a class="nav-link" href="/driver/dashboard">Driver Dashboard</a>
+                </li>
+<!--                <li class="nav-item" sec:authorize="hasRole('ADMIN')">-->
+<!--                    <a class="nav-link" href="/home/admin">Admin Dashboard</a>-->
+<!--                </li>-->
+                <li class="nav-item" sec:authorize="hasRole('ADMIN')">
+                    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
+                       data-bs-toggle="dropdown" aria-expanded="false">Create</a>
+                    <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
+                        <li><a class="dropdown-item" href="/admin/create-driver">Create a Driver</a></li>
+                        <li><a class="dropdown-item" href="/admin/create-manager">Create a Manager</a></li>
+                        <li><a class="dropdown-item" href="/admin/create-warehouse">Create a Warehouse</a></li>
+                    </ul>
+                </li>
+            </ul>
+
+            <!--    Login/Logout Links:    -->
+            <ul class="navbar-nav ms-auto">
+                <li class="nav-item" sec:authorize="!isAuthenticated()">
+                    <a class="nav-link" href="/auth/login">Login</a>
+                </li>
+                <li class="nav-item" sec:authorize="isAuthenticated()">
+                    <form th:action="@{/auth/logout}" method="post">
+                        <button type="submit" class="nav-link btn btn-primary">Logout</button>
+                    </form>
+                </li>
+            </ul>
+        </div>
+    </div>
+</nav>
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+</body>
+</html>
Index: ckend/src/main/resources/templates/home.html
===================================================================
--- backend/src/main/resources/templates/home.html	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,16 +1,0 @@
-<!DOCTYPE html >
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <title>Title</title>
-    <link rel="stylesheet" th:href="@{/../static/css/style.css}">
-</head>
-<body>
-<div th:replace="fragments/header :: header"></div>
-<main>
-    <h1>Welcome to Our Application</h1>
-    <p>If you have an account, please log in. Otherwise, register to get started.</p>
-</main>
-<div th:replace="fragments/footer :: footer"></div>
-</body>
-</html>
Index: backend/src/main/resources/templates/home/admin.html
===================================================================
--- backend/src/main/resources/templates/home/admin.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/home/admin.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+</head>
+<body>
+<div th:replace="~{fragments/navbar :: navbar}"></div>
+
+<div class="container mt-4">
+    <h1>Welcome to the Home Page</h1>
+    <p th:text="'Welcome Admin!'"></p>
+</div>
+
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+</body>
+</html>
Index: backend/src/main/resources/templates/home/customer.html
===================================================================
--- backend/src/main/resources/templates/home/customer.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/home/customer.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Customer Home</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+</head>
+<body>
+<div th:replace="~{fragments/navbar :: navbar}"></div>
+
+<div class="container mt-4">
+    <h1>Welcome to the Home Page</h1>
+    <p th:text="'Hello, ' + ${customer.getUsername()} + '!'"></p>
+</div>
+
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+</body>
+</html>
Index: backend/src/main/resources/templates/home/driver.html
===================================================================
--- backend/src/main/resources/templates/home/driver.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/home/driver.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Driver Home</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+</head>
+<body>
+<div th:replace="~{fragments/navbar :: navbar}"></div>
+
+<div class="container mt-4">
+    <h1>Welcome to the Home Page</h1>
+    <p th:text="'Hello, ' + ${userType} + '!'"></p>
+</div>
+
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+</body>
+</html>
Index: backend/src/main/resources/templates/home/manager.html
===================================================================
--- backend/src/main/resources/templates/home/manager.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/main/resources/templates/home/manager.html	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Manager Home</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+</head>
+<body>
+<div th:replace="~{fragments/navbar :: navbar}"></div>
+
+<div class="container mt-4">
+    <h1>Welcome to the Home Page</h1>
+    <p th:text="'Hello, ' + ${userType} + '!'"></p>
+</div>
+
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+</body>
+</html>
Index: ckend/src/main/resources/templates/login.html
===================================================================
--- backend/src/main/resources/templates/login.html	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,40 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <title>Login</title>
-    <link rel="stylesheet" th:href="@{/../static/css/style.css}">
-</head>
-<body>
-<div th:replace="fragments/header :: header"></div>
-<main>
-    <div class="container">
-        <form class="form-signin mt-xl-5" method="post" th:action="@{/login}">
-            <h2 class="form-signin-heading">Sign in</h2>
-            <p>
-                <label for="email" class="sr-only">Email</label>
-                <input type="email" id="email" class="form-control"
-                       placeholder="Email" required="" autofocus="">
-            </p>
-            <p>
-                <label for="password" class="sr-only">Password</label>
-                <input type="password" id="password" class="form-control"
-                       placeholder="Password" required="" autofocus="">
-            </p>
-
-            <div th:if="${param.error}" th:text="${param.error}" class="text-danger"></div>
-
-            <div class="row">
-                <div class="col-md-3">
-                    <button id="submit" class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
-                </div>
-                <div class="col-md-3">
-                    <a href="/register" class="btn btn-lg btn-block btn-light">Register here</a>
-                </div>
-            </div>
-        </form>
-    </div>
-</main>
-<div th:replace="fragments/footer :: footer"></div>
-</body>
-</html>
Index: ckend/src/main/resources/templates/register.html
===================================================================
--- backend/src/main/resources/templates/register.html	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,65 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <title>Register</title>
-    <link rel="stylesheet" th:href="@{/../static/css/style.css}">
-</head>
-<body>
-<div th:replace="fragments/header :: header"></div>
-<main>
-    <div class="container mb-4">
-        <form class="form-signin mt-xl-5" method="post" th:action="@{/register}">
-            <h2 class="form-signin-heading">Register</h2>
-            <p>
-                <label for="email" class="sr-only">Email: </label>
-                <input type="email" id="email" name="email" class="form-control"
-                       placeholder="Email" required="" autofocus="">
-            </p><br><br>
-            <p>
-                <label for="password" class="sr-only">Password: </label>
-                <input type="password" id="password" name="password" class="form-control"
-                       placeholder="Password" required="" autofocus="">
-            </p><br><br>
-            <p>
-                <label for="repeatedPassword" class="sr-only">Repeat Password: </label>
-                <input type="password" id="repeatedPassword" name="repeatPassword" class="form-control"
-                       placeholder="Repeat Password" required="" autofocus="">
-            </p><br><br>
-            <p>
-                <label for="name" class="sr-only">First Name: </label>
-                <input type="text" id="name" name="Name" class="form-control"
-                       placeholder="First Name" required="" autofocus="">
-            </p><br><br>
-            <p>
-                <label for="surname" class="sr-only">Last Name: </label>
-                <input type="text" id="surname" name="Surname" class="form-control"
-                       placeholder="Last Name" required="" autofocus="">
-            </p><br><br>
-            <p>
-                <label for="mobile" class="sr-only">Mobile: </label>
-                <input type="tel" id="mobile" name="Mobile" class="form-control"
-                       placeholder="Mobile" required="" autofocus="">
-            </p><br><br>
-            <p>
-                <label for="profileImage" class="sr-only">Profile Picture: </label>
-                <input type="file" id="profileImage" name="profileImage" accept="image/*">
-            </p><br><br>
-
-            <p>
-                <label for="city" class="sr-only">What city are you from? </label><br><br>
-                <select id="city" name="city" style="width: 300px;">
-                    <option value="" disabled selected>Select a city</option>
-                    <th:block th:each="city : ${cities}">
-                        <option th:value="${city.getCity_id()}" th:text="${city.getCity_name()}"></option>
-                    </th:block>
-                </select>
-            </p>
-
-            <button type="submit">Register</button>
-        </form>
-    </div>
-</main>
-<div th:replace="fragments/footer :: footer"></div>
-</body>
-</html>
Index: ckend/src/main/resources/templates/userCustomer/home.html
===================================================================
--- backend/src/main/resources/templates/userCustomer/home.html	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,16 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <title>Title</title>
-    <link rel="stylesheet" th:href="@{/../static/css/style.css}">
-</head>
-<body>
-<div th:replace="fragments/header :: header"></div>
-<main>
-    <h1>Welcome, Customer!</h1>
-    <p>View your orders, account details, and more.</p>
-</main>
-<div th:replace="fragments/footer :: footer"></div>
-</body>
-</html>
Index: ckend/src/main/resources/templates/userDriver/home.html
===================================================================
--- backend/src/main/resources/templates/userDriver/home.html	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,16 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <title>Title</title>
-    <link rel="stylesheet" th:href="@{/../static/css/style.css}">
-</head>
-<body>
-<div th:replace="fragments/header :: header"></div>
-<main>
-    <h1>Welcome, Driver!</h1>
-    <p>View your assigned deliveries and schedules.</p>
-</main>
-<div th:replace="fragments/footer :: footer"></div>
-</body>
-</html>
Index: ckend/src/main/resources/templates/userManager/home.html
===================================================================
--- backend/src/main/resources/templates/userManager/home.html	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,16 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <title>Title</title>
-    <link rel="stylesheet" th:href="@{/../static/css/style.css}">
-</head>
-<body>
-<div th:replace="fragments/header :: header"></div>
-<main>
-    <h1>Welcome, Manager!</h1>
-    <p>Assign deliveries, manage deliveries, and monitor progress.</p>
-</main>
-<div th:replace="fragments/footer :: footer"></div>
-</body>
-</html>
Index: ckend/src/test/java/mk/ukim/finki/db/distributorapp/ArticleControllerIntegrationTest.java
===================================================================
--- backend/src/test/java/mk/ukim/finki/db/distributorapp/ArticleControllerIntegrationTest.java	(revision e460df4299a6db865fb9d69b08139d9e484db719)
+++ 	(revision )
@@ -1,91 +1,0 @@
-package mk.ukim.finki.db.distributorapp;
-
-import org.junit.jupiter.api.Test;
-import org.junit.platform.commons.logging.Logger;
-import org.junit.platform.commons.logging.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.web.client.RestTemplate;
-
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
-@SpringBootTest
-@AutoConfigureMockMvc
-public class ArticleControllerIntegrationTest {
-
-    private static final Logger logger = LoggerFactory.getLogger(ArticleControllerIntegrationTest.class);
-
-    @Autowired
-    private RestTemplate restTemplate;
-
-    @Autowired
-    private MockMvc mockMvc;
-
-//    @Test
-//    void testGetAllArticles() {
-//        logger.info();
-//    }
-
-    @Test
-    public void testAddEditDeleteArticle() throws Exception {
-        String newArticle = """
-                {
-                    "id": null,
-                    "name": "Test Article",
-                    "manufacturer": "Test Manufacturer",
-                    "manufacturerId": 1,
-                    "price": 99.99,
-                    "category": "Test Category",
-                    "categoryId": 1,
-                    "weight": 10,
-                    "image": "test_image.jpg"
-                }
-                """;
-
-        String response = mockMvc.perform(put("/article/add")
-                        .contentType(MediaType.APPLICATION_JSON)
-                        .content(newArticle))
-                .andExpect(status().isOk())
-                .andExpect(jsonPath("$.id").exists())
-                .andReturn()
-                .getResponse()
-                .getContentAsString();
-
-        Long articleId = extractIdFromResponse(response);
-
-        String updatedArticle = """
-                {
-                    "id": %d,
-                    "name": "Updated Test Article",
-                    "manufacturer": "Test Manufacturer",
-                    "manufacturerId": 1,
-                    "price": 199.99,
-                    "category": "Test Category",
-                    "categoryId": 1,
-                    "weight": 15,
-                    "image": "updated_image.jpg"
-                }
-                """.formatted(articleId);
-
-        mockMvc.perform(put("/article/edit")
-                .contentType(MediaType.APPLICATION_JSON)
-                .content(updatedArticle))
-                .andExpect(status().isOk())
-                .andExpect(jsonPath("$.name").value("Updated Test Article"));
-
-        mockMvc.perform(delete("/article/delete/"+articleId))
-                .andExpect(status().isOk());
-
-        mockMvc.perform(get("/article/"+articleId))
-                .andExpect(status().isNotFound());
-    }
-
-    private Long extractIdFromResponse(String response) {
-        return Long.valueOf(response.replaceAll("[^0-9]",""));
-    }
-}
Index: backend/src/test/java/mk/ukim/finki/db/distributorapp/RestArticleControllerIntegrationTest.java
===================================================================
--- backend/src/test/java/mk/ukim/finki/db/distributorapp/RestArticleControllerIntegrationTest.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
+++ backend/src/test/java/mk/ukim/finki/db/distributorapp/RestArticleControllerIntegrationTest.java	(revision cde148577250f78444c556d55e9d413e9f369cfc)
@@ -0,0 +1,91 @@
+package mk.ukim.finki.db.distributorapp;
+
+import org.junit.jupiter.api.Test;
+import org.junit.platform.commons.logging.Logger;
+import org.junit.platform.commons.logging.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.web.client.RestTemplate;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@SpringBootTest
+@AutoConfigureMockMvc
+public class RestArticleControllerIntegrationTest {
+
+    private static final Logger logger = LoggerFactory.getLogger(RestArticleControllerIntegrationTest.class);
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Autowired
+    private MockMvc mockMvc;
+
+//    @Test
+//    void testGetAllArticles() {
+//        logger.info();
+//    }
+
+    @Test
+    public void testAddEditDeleteArticle() throws Exception {
+        String newArticle = """
+                {
+                    "id": null,
+                    "name": "Test Article",
+                    "manufacturer": "Test Manufacturer",
+                    "manufacturerId": 1,
+                    "price": 99.99,
+                    "category": "Test Category",
+                    "categoryId": 1,
+                    "weight": 10,
+                    "image": "test_image.jpg"
+                }
+                """;
+
+        String response = mockMvc.perform(put("/article/add")
+                        .contentType(MediaType.APPLICATION_JSON)
+                        .content(newArticle))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.id").exists())
+                .andReturn()
+                .getResponse()
+                .getContentAsString();
+
+        Long articleId = extractIdFromResponse(response);
+
+        String updatedArticle = """
+                {
+                    "id": %d,
+                    "name": "Updated Test Article",
+                    "manufacturer": "Test Manufacturer",
+                    "manufacturerId": 1,
+                    "price": 199.99,
+                    "category": "Test Category",
+                    "categoryId": 1,
+                    "weight": 15,
+                    "image": "updated_image.jpg"
+                }
+                """.formatted(articleId);
+
+        mockMvc.perform(put("/article/edit")
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(updatedArticle))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.name").value("Updated Test Article"));
+
+        mockMvc.perform(delete("/article/delete/"+articleId))
+                .andExpect(status().isOk());
+
+        mockMvc.perform(get("/article/"+articleId))
+                .andExpect(status().isNotFound());
+    }
+
+    private Long extractIdFromResponse(String response) {
+        return Long.valueOf(response.replaceAll("[^0-9]",""));
+    }
+}
