fhiiqm/ma_tel_ed.php
changeset 34 fc60ef80a7ad
parent 33 f1a8785434e4
child 40 6f4b105daa24
--- a/fhiiqm/ma_tel_ed.php	Fri Dec 21 15:31:50 2012 +0100
+++ b/fhiiqm/ma_tel_ed.php	Wed Feb 27 09:43:08 2013 +0100
@@ -59,34 +59,69 @@
     var counter = 0;
     var limit = 99;
     var arr = new Array();
+    var arra = new Array();
+    var arrg = new Array();
     function addInput(divName){
          if (counter == limit)  {
               alert("Das Limit von " + counter + " zusätzlichen inputs ist erreicht");
          }
-         else {
+         else 
+         {
+            if (divName == 'addtel')
+            {            
               var newdiv = document.createElement('div');
               var opt="<option value='-1'></option>";
+              var i;
               for (var key in arr)  
               {
                 opt = opt.concat("<option value='",key,"'>",arr[key],"</option>\n" );
               }
-              opt += "</select>";
-              newdiv.innerHTML = "<select name='ma[tel][]'>"+opt;
-              newdiv.innerHTML += "&nbsp;&nbsp;&nbsp;&nbsp;oder neu&nbsp;&nbsp;&nbsp;<input type='text' name='ma[ntel][]' size='20' maxlength='20' />";
-              newdiv.innerHTML += "&nbsp;&nbsp;&nbsp;&nbsp;&ouml;ffentlich&nbsp;&nbsp;&nbsp;<input type='checkbox' name='ma[pub][" + (counter+1) + "]' value='1' />";
+              opt += "</select>\n";
+              newdiv.innerHTML = "<span></span><select name='ma[tel][]'>"+opt;
+              newdiv.innerHTML += "&nbsp;&nbsp;&nbsp;oder neu&nbsp;&nbsp;&nbsp;<input type='text' name='ma[ntel][]' size='20' maxlength='20' />";
+              opt = "<option value='-1'></option>";
+              for (i=1; i<10; i++)
+              {
+                opt = opt.concat("<option value=",i,">",i,"</option>\n");
+              }
+              opt += "</select>\n";
+              newdiv.innerHTML += "&nbsp;&nbsp;&nbsp;&nbsp;Priorit&auml;t&nbsp;&nbsp;&nbsp;<select name='ma[so][]'>"+opt;
+              newdiv.innerHTML += "&nbsp;&nbsp;&nbsp;&ouml;ffentlich&nbsp;&nbsp;&nbsp;<input type='checkbox' name='ma[pub][" + (counter+1) + "]' value='1' />\n";
               document.getElementById(divName).appendChild(newdiv);
               counter++;
+            }
+            else
+            {
+              var newdiv = document.createElement('div');
+              var opt="";
+              var optg="<option value='-1'></option>";
+              for (var key in arra)  
+              {
+                opt = opt.concat("<option value='",key,"'>",arra[key],"</option>\n" );
+              }
+              opt += "</select>\n";
+              newdiv.innerHTML = "<span></span><select name='ma[abt][]'>"+opt;
+              for (var key in arrg)  
+              {
+                optg = optg.concat("<option value='",key,"'>",arrg[key],"</option>\n" );
+              }
+              optg += "</select>\n";
+              newdiv.innerHTML += "&nbsp;&nbsp;&nbsp;&nbsp;Arbeitsgruppe&nbsp;&nbsp;&nbsp;&nbsp;<select name='ma[rag][]'>"+optg;                
+              document.getElementById(divName).appendChild(newdiv);
+              counter++;
+            }  
          }
     }
     function delInput(divId){
             var kn = document.getElementById(divId); 
-            while (kn.childNodes.length>0 && kn.lastChild.nodeName != "SELECT" && kn.lastChild.nodeName != "A")
+            while (kn.childNodes.length>0 && kn.lastChild.nodeName != "SPAN" && kn.lastChild.nodeName != "A")
             {
 //                alert ("vor "+kn.lastChild.nodeName+", nodetyp = "+ kn.lastChild.nodeType);
                 var knc = kn.lastChild;
                     document.getElementById(divId).removeChild(knc);
             }
-            if (kn.lastChild.nodeName == "SELECT") document.getElementById(divId).removeChild(kn.lastChild);
+//            if (kn.lastChild.nodeName == "SELECT") document.getElementById(divId).removeChild(kn.lastChild);
+            if (kn.lastChild.nodeName == "SPAN") document.getElementById(divId).removeChild(kn.lastChild);
     }
     //-->
     </script>
@@ -111,7 +146,7 @@
         
         if ($pid && (!$sub || !$del) && !isset($ma))
         {
-            $sql = "SELECT nachname,vorname,titel,rag_ID,abt_tel,email,aktiv FROM Mitarbeiter WHERE persknr=$pid";
+            $sql = "SELECT nachname,vorname,titel,abt_tel,email,aktiv FROM Mitarbeiter WHERE persknr=$pid";
             if ($result = $dbc -> queryObjectArray($sql))
             {
                 foreach ($result as $row)
@@ -119,12 +154,23 @@
                     $ma['name']     = $row->nachname;
                     $ma['vname']    = $row->vorname;
                     $ma['titel']    = $row->titel;
-                    $ma['rag']      = $row->rag_ID;
-                    $ma['abt']      = $row->abt_tel;
+                    $ma['abtm']     = $row->abt_tel;
                     $ma['email']    = $row->email;
                     $ma['fhi']      = ($row->aktiv == 1)? 1 : 0;
                 }    
             }
+            // Arbeitsgruppe, Abteilung
+            $sql = "SELECT mr.rag_ID, abt_ID FROM fhiiqm.MA_RaumArbGruppe mr INNER JOIN RaumArb_Gruppe r ON mr.rag_ID=r.rag_ID 
+                    WHERE  persknr=$pid";
+            if ($result = $dbc -> queryObjectArray($sql))
+            {
+                foreach ($result as $row)
+                {
+                   $ma['abt'][] = $row->abt_ID;  
+                   $ma['rag'][] = $row->rag_ID;  
+                }
+            }
+            if (count($ma['abt']) == 0) $ma['abt'][] = $ma['abtm']; 
             // Haus,Raum
             $sql = "SELECT ma.raum_ID, geb_ID FROM Mitarbeiter_Raum ma INNER JOIN Raum r ON ma.raum_ID=r.raum_ID 
                     WHERE persknr=$pid ORDER BY raum_ID"; 
@@ -137,15 +183,16 @@
                 }
             }
             // Telefon
-            $sql = "SELECT m.telefon_nr,public
+            $sql = "SELECT m.telefon_nr,public,sort
                     FROM fhiiqm.MA_Telefon m INNER JOIN Telefon t ON m.telefon_nr=t.telefon_nr 
-                    WHERE persknr = $pid";
+                    WHERE persknr = $pid ORDER BY IFNULL(sort,99)" ;
             if ($result = $dbc -> queryObjectArray($sql))
             {
                 foreach ($result as $row)
                 {
                     $ma['tel'][] = $row->telefon_nr;
                     $ma['pub'][] = ($row->public)? 1 : 0;
+                    $ma['so'][]  = $row->sort;   
                 }
             }
         }
@@ -195,6 +242,8 @@
                 $retdi = $dbc -> execute($sql);
                 $sql = "DELETE FROM MA_Telefon WHERE persknr = $pid";
                 $retdi = $dbc -> execute($sql);
+                $sql = "DELETE FROM MA_RaumArbGruppe WHERE persknr = $pid";
+                $retdi = $dbc -> execute($sql);
             }
             else
             {
@@ -215,23 +264,28 @@
         }
         else //INSERT oder UPDATE
         {
-            if ($ma['rag'] == -1) $ma['rag'] = null;
             $stmt = $dbc -> stmtinit();
             if (is_object($stmt))
             {
-                if ($ma['fhi']) $aktiv = 1; else $aktiv = 2; 
+                if ($ma['fhi']) $aktiv = 1; else $aktiv = 2;
+                if ($ma['email'])
+                {
+                    if (strpos($ma['email'],"@") > 0) $ma['email'] = $ma['email']; else $ma['email'] = $ma['email'] . "@fhi-berlin.mpg.de";
+                } 
+                foreach ($ma as &$elem) if (!$elem) $elem = null;  // NULL-Eintrag in Leerfelder  
                 if ($pid) //UPDATE
                 {
+                    // Abt. alt in aktualisierten Abteilungen?
+                    if (!in_array($ma['abtm'],$ma['abt'])) $ma['abtm'] = $ma['abt'][0];
                     $stmt -> prepare("UPDATE Mitarbeiter SET 
                                         nachname = ?,
                                         vorname = ?,
                                         titel = ?,
-                                        rag_ID = ?,
                                         email = ?,
                                         abt_tel = ?,
                                         aktiv = ?
                                         WHERE persknr = $pid");
-                    $stmt -> bind_param('sssisii',$ma['name'],$ma['vname'],$ma['titel'],$ma['rag'],$ma['email'],$ma['abt'], $aktiv);
+                    $stmt -> bind_param('ssssii',$ma['name'],$ma['vname'],$ma['titel'],$ma['email'],$ma['abtm'], $aktiv);
 //                    echo "UPDATE: ". var_dump($stmt);
                     $result = $stmt -> execute();
                     if ($stmt->error) echo "error UPDATE Mitarbeiter: " . $stmt->error . "<br><br>\n";
@@ -240,10 +294,11 @@
                 {
                     $sql = "SELECT MAX(persknr) FROM Mitarbeiter WHERE persknr < 9500";
                     $pid = $dbc -> querySingleItem($sql) + 1;
-                    $stmt -> prepare ("INSERT INTO Mitarbeiter (persknr, nachname, vorname, titel,rag_ID,email,abt_tel,aktiv) VALUES (?,?,?,?,?,?,?,?)"); 
-                    $stmt -> bind_param('isssisii',$pid,$ma['name'],$ma['vname'],$ma['titel'],$ma['rag'],$ma['email'],$ma['abt'], $aktiv);
+                    $stmt -> prepare ("INSERT INTO Mitarbeiter (persknr, nachname, vorname, titel,email,abt_tel,aktiv) VALUES (?,?,?,?,?,?,?)"); 
+                    $stmt -> bind_param('issssii',$pid,$ma['name'],$ma['vname'],$ma['titel'],$ma['email'],$ma['abt'][0], $aktiv);
                     $result = $stmt -> execute();
                     if ($stmt->error) echo "error INSERT Mitarbeiter: " . $stmt->error . "<br><br>\n";
+                    $ma['abtm'] = $ma['abt'][0];
                 }
                 if ($result)
                 {
@@ -259,6 +314,23 @@
                             $ret = $dbc -> execute($sql);
                         } 
                     }
+                    if (is_array($ma["rag"]) && count($ma["rag"])>0)
+                    {
+                        $sql = "DELETE FROM MA_RaumArbGruppe WHERE persknr=$pid";
+                        $redr = $dbc -> execute($sql);
+                        if ($redr)
+                        {
+                            foreach ($ma['rag'] as $rag)
+                            {
+                                if ($rag > 0)
+                                {
+                                    $sql = "INSERT INTO MA_RaumArbGruppe (persknr, rag_ID) VALUES ($pid, $rag)";
+                                    $retn = $dbc -> execute($sql);
+                                    if ($retn && $ret) $ret = 1; else $ret = 0;
+                                }
+                            }    
+                        } 
+                    }
                     if (is_array($ma['ntel']))
                     {
                         foreach ($ma['ntel'] as $tel)
@@ -271,13 +343,15 @@
                                 {
                                     $sql = "INSERT INTO Telefon (telefon_nr) VALUES('$tel')";
                                     $rest = $dbc -> execute($sql);
-                                    if ($rest) $ret = 1; else $ret = 0;
+                                    if ($rest && $ret) $ret = 1; else $ret = 0;
                                 }
                             }    
                         }
                     }
                     if ($ret)
                     {
+                        foreach ($ma['so'] as &$prio)
+                            if ($prio == '-1') $prio = null; 
                         $sql = "DELETE FROM MA_Telefon WHERE persknr = $pid";
                         $redmt = $dbc -> execute($sql);
                         if ($redmt)
@@ -288,9 +362,10 @@
                                 if ($tel >"!" && $tel != "-1")
                                 {
                                     if (!isset($ma['pub'][$i])) $ma['pub'][$i] = 'NULL';
-                                    $sql = "INSERT INTO MA_Telefon (persknr, telefon_nr, public) VALUES ($pid,'$tel'," . $ma['pub'][$i] . ")";
+                                    if (!isset($ma['so'][$i])) $ma['so'][$i] = 'NULL';
+                                    $sql = "INSERT INTO MA_Telefon (persknr, telefon_nr, public, sort) VALUES ($pid,'$tel'," . $ma['pub'][$i] . ",". $ma['so'][$i] . ")";
                                     $rest = $dbc -> execute($sql);
-                                    if ($rest) $ret = 1; else $ret = 0;
+                                    if ($rest && $ret) $ret = 1; else $ret = 0;
                                 }
                                 $i++;
                             }
@@ -300,9 +375,10 @@
                                 if ($tel >"!")
                                 {
                                     if (!isset($ma['pub'][$i])) $ma['pub'][$i] = 'NULL';
-                                    $sql = "INSERT INTO MA_Telefon (persknr, telefon_nr, public) VALUES ($pid,'$tel'," . $ma['pub'][$i] . ")";
+                                    if (!isset($ma['so'][$i])) $ma['so'][$i] = 'NULL';
+                                    $sql = "INSERT INTO MA_Telefon (persknr, telefon_nr, public, sort) VALUES ($pid,'$tel'," . $ma['pub'][$i] . ",". $ma['so'][$i] . ")";
                                     $rest = $dbc -> execute($sql);
-                                    if ($rest) $ret = 1; else $ret = 0;
+                                    if ($rest && $ret) $ret = 1; else $ret = 0;
                                 }
                                 $i++;
                             }