;***************************************** ;Ikona #AutoIt3Wrapper_Icon="G:\Dysk E\Mago\Ikony\mago.ico" #include Opt("TrayMenuMode", 3) $hidded = 1 #include Global $ContextMenu = -1, $menu_otworz = -1, $menu_status = -1, $menu_status_realizowane = -1, $menu_status_wstrzymane = -1, $menu_info = -1, $menu_teamviewer = -1, $menu_teamviewer_polacz = -1 #include #include #include #include #include "Forms\GUI2.isf" #include "Forms\form_komentarze.isf" #include "Forms\form_komentarz_view.isf" #include "Forms\form_ldap.isf" #include "Forms\form_ldap_search.isf" #include "Forms\form_nowe_zgloszenie.isf" #include #include #include #include "EzMySql.au3" ;======================================================================================================== Progres $form_action = GUICreate("Action", 330, 94, -1, -1, BitOR($WS_POPUP, $WS_BORDER), $WS_EX_TOOLWINDOW, $GUI) $wskaznik = GUICtrlCreateProgress(19, 40, 291, 9, $PBS_MARQUEE) GUICtrlCreateLabel("Proszę czekać...", 124, 62, 82, 15, -1, -1) GUICtrlSendMsg($wskaznik, $PBM_SETMARQUEE, True, 50) ;========================================================================================================= Global $SQL_Server = "xx.xx.3.249" ;================================= Global $aZlecenia, $aKomentarze, $LDAP_DATA = 0, $oLDAP, $user_selected = "" Global $repo_path = "\\xx.xx.3.198\repozytorium\", $operator, $zlecenie_ostatnio_wybrane ; Zmienne potrzebne to ustalenia aktualnie otwartego zlecenia i jego statusu Global $global_status_zlecenia = "", $global_numer_zlecenia = "", $global_selected_id = 0, $global_server_sync_time = 0, $global_user_selected = 0 Dim $helpdesk[3] = ["Paweł Dacka", "Krzysztof Usarkiewicz", "Małgorzata Świderska"] ;----------------------- Wyświetlenie GUI WinSetTitle($GUI, "", "d.mago - Interfejs V2.8.2b") GUISetState(@SW_SHOW, $GUI) Opt("GUICloseOnESC", 0) ; wyłączenie zamukania GUI za pomocą klawisza ESC ControlFocus($GUI, "", $Ilogin) GUICtrlSetResizing($AD_IMG_ZG, $GUI_DOCKHEIGHT + $GUI_DOCKWIDTH) ;================================================= ;AdlibRegister("check_status_auto_refresh", 300000) ;================================================= $hDLL = DllOpen("user32.dll") ; Zaznaczenie tekstu w polu login _GUICtrlEdit_SetSel($Ilogin, 0, 10) ;$operator = "Paweł Dacka" ;start() While 1 If _IsPressed("0D") Then If ControlGetFocus($GUI, "") = "edit3" And $operator = "" Then $l = login() If $l = 1 Then start() Sleep(500) EndIf EndIf If _IsPressed("0D") Then ; Otwarcie wyszukiwania LDAP If ControlGetFocus($GUI, "") = "edit1" Then If GUICtrlRead($iLDAP_szukaj) <> "" Then LDAP_Search() EndIf EndIf EndIf If _IsPressed("28") Then ; Przesuwanie kursorem w dół po liście zleceń lv_select(_GUICtrlListView_GetSelectedIndices($lvListaZlecen)) EndIf If _IsPressed("26") Then ; Przesuwanie kursorem w dół po liście zleceń lv_select(_GUICtrlListView_GetSelectedIndices($lvListaZlecen)) EndIf ;----------------------------------------------------------------------------------- Tray $tryMsg = TrayGetMsg() Switch $tryMsg Case $TRAY_EVENT_PRIMARYDOWN ; Kliknięcie na ikonie systay If $hidded = 0 Then GUISetState(@SW_HIDE, $GUI) $hidded = 1 Else GUISetState(@SW_SHOW, $GUI) $hidded = 0 EndIf EndSwitch ;----------------------------------------------------------------------- GUI $_GUIGetMsg = GUIGetMsg() Switch $_GUIGetMsg Case $GUI_EVENT_CLOSE ;~ If $LDAP_DATA = 1 Then ;~ _AD_Close() ;~ EndIf ;~ zapisz_konfig() ;~ Exit GUISetState(@SW_HIDE, $GUI) $hidded = 1 Case $bLogin $l = login() If $l = 1 Then start() Case $bGUI_Zamknij ; Odświezenie listy zleceń ;utworz_LV_lista_zlecen() ;check_status() If $LDAP_DATA = 1 Then _AD_Close() EndIf zapisz_konfig() Exit Case $lStatus ; Sprawdzenie statusów zleceń Case $lZglosil ; Wyświetlenie informacji o zgłaszającym z AD Case $AD_IMG_ZG ldap_user_info($user_selected) Case $bLDAP_szukaj LDAP_Search() Case $bZgloszeniaZamknij GUISetState(@SW_HIDE, $form_komentarze) utworz_LV_lista_zlecen() _GUICtrlListView_ClickItem($lvListaZlecen, $zlecenie_ostatnio_wybrane) Case $bKomentarz_Pelny_Zamknij GUISetState(@SW_HIDE, $form_komentarz_view) Case $bKomentarzZapisz Komentarze_zapisz() ;========================================================================= Obsługa menu kontekstowego Case $menu_otworz $menu_otworz = -1 AdlibUnRegister("check_status") komentarze(_GUICtrlListView_GetSelectedIndices($lvListaZlecen)) AdlibRegister("check_status", 60000) Case $menu_status_realizowane $menu_status_realizowane = -1 menu_zmien_status("Realizowane") Case $menu_status_wstrzymane $menu_status_wstrzymane = -1 menu_zmien_status("Wstrzymane") Case $menu_info $menu_info = -1 ldap_user_info($user_selected) Case $menu_teamviewer_polacz $menu_teamviewer_polacz = -1 team_viewer($global_user_selected) EndSwitch ;ConsoleWrite($menu_info & @CRLF) WEnd Func start() SQL_login() ldap_load_data() ;_ArrayDisplay($oLDAP) ;utworz_LV_lista_zlecen() $cs = check_status() If $cs <> 1 Then ; Nie ma żadnego zlecenia ze statusem zarejestrowane _GUICtrlListView_ClickItem($lvListaZlecen, 0) lv_select(0) $zlecenie_ostatnio_wybrane = 0 EndIf odczytaj_konfig() GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") ; Włączenie klikania po ListView AdlibRegister("check_status", 60000) EndFunc ;==>start Func utworz_LV_lista_zlecen() Local $col = "" Local $aKolumny = "" Local $row = "" Local $lv_item = 0 Local $sMySqlStatement = "" Local $_sort_sense = False $sMySqlStatement = "SELECT * FROM zlecenia;" $aZlecenia = _EzMySql_GetTable2d($sMySqlStatement) ; Pobranie listy zleceń z tablicy SQL _GUICtrlListView_BeginUpdate($lvListaZlecen) _GUICtrlListView_DeleteAllItems($lvListaZlecen) ; Utworzenie kolumn If _GUICtrlListView_GetColumnCount($lvListaZlecen) = 0 Then Dim $aKolumny[11] = ["Numer", "Data", "Dział", "Firma", "Temat", "Realizujący", "Status", "Typ", "Zgłaszający", "Telefon", "Komputer"] For $for_kolumny = 0 To UBound($aKolumny) - 1 $col = $aKolumny[$for_kolumny] _GUICtrlListView_AddColumn($lvListaZlecen, $col) Next EndIf ; Utworzenie wierszy ze zleceniami For $for_zlecenia = 1 To UBound($aZlecenia) - 1 For $for_kolumny = 0 To UBound($aZlecenia, 2) - 2 $row = $row & $aZlecenia[$for_zlecenia][$for_kolumny] $row = $row & "|" Next $row = StringTrimRight($row, 1) $lv_item = GUICtrlCreateListViewItem($row, $lvListaZlecen) If StringInStr($row, "Zarejestrowane") Then GUICtrlSetColor($lv_item, 0xFF0000) EndIf If StringInStr($row, "Realizowane") Then GUICtrlSetColor($lv_item, 0x00BD2F) EndIf If StringInStr($row, "Wstrzymane") Then ;GUICtrlSetColor($lv_item, 0xC0C0C0) GUICtrlSetColor($lv_item, 0x7C7C7C) EndIf If StringInStr($row, "Oczekujące") Then GUICtrlSetColor($lv_item, 0xFF9900) EndIf If StringInStr($row, "Zrealizowane") Then GUICtrlSetColor($lv_item, 0xE1E1E1) EndIf If StringInStr($row, "Odrzucone") Then GUICtrlSetColor($lv_item, 0xE1E1E1) EndIf $row = "" Next _GUICtrlListView_SimpleSort($lvListaZlecen, $_sort_sense, 0) _GUICtrlListView_SetColumnWidth($lvListaZlecen, 0, $LVSCW_AUTOSIZE) _GUICtrlListView_SetColumnWidth($lvListaZlecen, 4, $LVSCW_AUTOSIZE) _GUICtrlListView_EndUpdate($lvListaZlecen) If WinGetState($GUI, "") = 2 Then ; Jeśli okno jest widoczne _GUICtrlListView_ClickItem($lvListaZlecen, $global_selected_id) EndIf statusbar_podsumowanie_zgloszen() EndFunc ;==>utworz_LV_lista_zlecen Func SQL_login() If Not _EzMySql_Startup() Then MsgBox(0, "Error Starting MySql", "Error: " & @error & @CR & "Error string: " & _EzMySql_ErrMsg()) Exit EndIf If Not _EzMySql_Open($SQL_Server, "xxx", "xxxxx", "xxxx", "3306") Then MsgBox(0, "Error opening Database", "Error: " & @error & @CR & "Error string: " & _EzMySql_ErrMsg()) Exit EndIf EndFunc ;==>SQL_login Func lv_select($index) $zlecenie_ostatnio_wybrane = $index $index = $index + 1 ;Pobranie imienia i nazwiska $user_selected = $aZlecenia[$index][8] $global_user_selected = $user_selected ;Usunięcie aktualnego zdjęcia ;GUICtrlSendMsg($AD_IMG_ZG, 0x0172, 0, 0) ; Usunięcie grafiki ;Ustawienie zdjęcia użytkownika LDAP_Photo($user_selected, $AD_IMG_ZG) zlecenie_pokaz_dane_w_belce($index) EndFunc ;==>lv_select Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $wParam Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo ; Local $tBuffer ;---------------------------------------------------------------------------------------------- Lista główna $g_hListView = $lvListaZlecen ;-------------------- $hWndListView = $g_hListView If Not IsHWnd($g_hListView) Then $hWndListView = GUICtrlGetHandle($g_hListView) $tNMHDR = DllStructCreate($tagNMHDR, $lParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $hWndListView Switch $iCode Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button Local $index = _GUICtrlListView_GetSelectedIndices($lvListaZlecen) If $index <> "" Then lv_select($index) EndIf Case $NM_RCLICK Local $index = _GUICtrlListView_GetSelectedIndices($lvListaZlecen) If $index <> "" Then lv_select($index) menu_zlecenia() EndIf Case $NM_DBLCLK ; Otwarcie zlecenia Local $index = _GUICtrlListView_GetSelectedIndices($lvListaZlecen) If $index <> "" Then ; Jeśli coś tu jest AdlibUnRegister("check_status") komentarze($index) AdlibRegister("check_status", 60000) EndIf Case $NM_HOVER EndSwitch EndSwitch ;-------------------------------------------------------------------------------------------------------------------------- Komentarze $g_hListView = $lv_komentarze ;-------------------- $hWndListView = $g_hListView If Not IsHWnd($g_hListView) Then $hWndListView = GUICtrlGetHandle($g_hListView) $tNMHDR = DllStructCreate($tagNMHDR, $lParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $hWndListView Switch $iCode Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button Case $NM_RCLICK Case $NM_DBLCLK Local $index = _GUICtrlListView_GetSelectedIndices($lv_komentarze) If $index <> "" Then ; Jeśli coś tu jest komentarze_szczegoly($index) EndIf Case $NM_HOVER EndSwitch EndSwitch _GUICtrlStatusBar_Resize($Status_Bar) Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY Func zlecenie_pokaz_dane_w_belce($id) Local $numer_zlec = "" Local $status = "" ;~ ;Zgłaszający GUICtrlSetData($lZglosil, $aZlecenia[$id][8]) ;Temat GUICtrlSetData($lTemat, $aZlecenia[$id][4]) GUICtrlSetTip($lTemat, $aZlecenia[$id][4]) ;Realizujący GUICtrlSetData($lRealizujacy, $aZlecenia[$id][5]) ;Data zgłoszenia GUICtrlSetData($lData, $aZlecenia[$id][1]) ;Status zgłoszenia GUICtrlSetData($lStatus, $aZlecenia[$id][6]) ;Firma GUICtrlSetData($lFirma, $aZlecenia[$id][3]) ;Telefon GUICtrlSetData($ltelefon, $aZlecenia[$id][9]) ;Komputer GUICtrlSetData($lKomputer, $aZlecenia[$id][10]) ;Czas statusy zlecenia $numer_zlec = $aZlecenia[$id][0] GUICtrlSetData($lczas_statusu, status_czas($numer_zlec)) $status = $aZlecenia[$id][6] Switch $status Case $status = "Zarejestrowane" GUICtrlSetColor($lStatus, 0xFF0000) Case $status = "Realizowane" GUICtrlSetColor($lStatus, 0x00BD2F) Case $status = "Wstrzymane" GUICtrlSetColor($lStatus, 0x7C7C7C) Case $status = "Oczekujące" GUICtrlSetColor($lStatus, 0xFF9900) EndSwitch EndFunc ;==>zlecenie_pokaz_dane_w_belce Func statusbar_podsumowanie_zgloszen() ;msgbox(0,"","Podsumowanie") Local $cell = "" Local $zlec1 = 0 ; Zarejestrowane Local $zlec2 = 0 ; Oczekujące Local $zlec3 = 0 ; Realizowane Local $zlec4 = 0 ; Wstrzymane Local $czas = "" Local $wszystkie_zlecenia = 0 $wszystkie_zlecenia = UBound($aZlecenia) - 1 For $n = 0 To $wszystkie_zlecenia $cell = $aZlecenia[$n][6] Switch $cell Case $cell = "Zarejestrowane" $zlec1 = $zlec1 + 1 Case $cell = "Oczekujące" $zlec2 = $zlec2 + 1 Case $cell = "Realizowane" $zlec3 = $zlec3 + 1 Case $cell = "Wstrzymane" $zlec4 = $zlec4 + 1 EndSwitch Next $czas = @HOUR & ":" & @MIN & ":" & @SEC _GUICtrlStatusBar_SetText($status_bar, "Operator: " & $operator & " | Zlecenia: " & $wszystkie_zlecenia & " | Zarejestrowane : " & $zlec1 & " | Oczekujące : " & $zlec2 & " | Realizowane : " & $zlec3 & " | Wstrzymane : " & $zlec4 & " | Odświeżone : " & $czas & " | " & server_sync_status()) EndFunc ;==>statusbar_podsumowanie_zgloszen Func znajdz_kolumne($lv, $nazwa_kolumny) ; Funkcja znajduje numer kolumny po jej nazwie Local $col = "" Local $col_name = "" For $n = 0 To _GUICtrlListView_GetColumnCount($lv) - 1 $col = _GUICtrlListView_GetColumn($lv, $n) $col_name = $col[5] $col_name = StringLeft($col_name, StringLen($col_name) - 1) ;MsgBox(0, StringLen($col_name), $col_name) If StringInStr($nazwa_kolumny, $col_name) Then Return $n EndIf Next ; Jeśli nie ma wskazanej kolumny to wyświetlamy stosowny komunikat i wychodzimy z programu MsgBox(16, "d.mago", "Brak kolumny o nazwie " & $nazwa_kolumny & " !") Exit EndFunc ;==>znajdz_kolumne Func action($tekst, $opt) If $opt = 1 Then GUISetState(@SW_SHOW, $form_action) $action_label = GUICtrlCreateLabel($tekst, 10, 14, 311, 15, $SS_CENTER, -1) GUISetState(@SW_SHOW, $form_action) Else ;GUIDelete($form_action) GUISetState(@SW_HIDE, $form_action) EndIf EndFunc ;==>action Func pokaz_pelny_komentarz($col, $pos) ;~ Local $komentarz_full = $tKomentarze[$pos + 1][$col] ;msgbox(0,"POS: " & $pos & " COL: " & $col,$komentarz_full) ;~ GUICtrlSetData($lKomentarz_Pelny, $komentarz_full) ;~ GUISetState(@SW_SHOW, $form_komentarz_view) EndFunc ;==>pokaz_pelny_komentarz Func ldap_load_data() ;Get AD info If $LDAP_DATA = 0 Then action("Wczytuję dane z Active Directory...", 1) Local $name = "" Local $ldap_srv = "xx.xx.1.251" Local $ldap_usr = "xxxxx" Local $ldap_psw = "xxxxx" Local $ldap_dn = "CN=Users,DC=xxxxx" Local $sAD_UserIdParam = "xxxxx" Local $sAD_PasswordParam = "xxxxxx" Local $LDAPUser = "" Local $LDAPLogin = "" Local $LDAPUserLastLogon = "" $result = _AD_Open($ldap_usr, $ldap_psw, "", $ldap_srv) If @error Then Exit MsgBox(16, "Active Directory Example Skript", "Function _AD_Open encountered a problem. @error = " & @error & ", @extended = " & @extended) $oLDAP = _AD_GetObjectsInOU($ldap_dn, "(&(objectclass=person))", 2, "cn,department,mail,telephoneNumber,mobile,facsimileTelephoneNumber,streetAddress,postalCode,l,co,st,wWWHomePage,calFBURL,title,company,thumbnailPhoto,pager,manager,userAccountControl,sAMAccountName,logonWorkstation,comment,LastLogonTimestamp") ;_ArrayDisplay($oLDAP) ; _AD_Close() ;0 - cn - Imię i Nazwisko ;1- department - oddział ;2 - mail - email - ;3 - telephoneNumber - numer telefonu ;4- mobile - numer komórki ;5 - facsimileTelephoneNumber - numer faks ;6 - streetAddress - Ulica ;7 - postalCode - kod pocztowy ;8 - l - Misto ;9 - co -Kraj ;10 - st - Województwo ;11 - wWWHomePage - strona www ;12 - calFBURL - kalendarz ;13 - title - Stanowisko ;14 - company - Firma ;15 - thumbnailPhoto - zdjęcie ;16 - pager ;17 - manager - Przełozony ;18 - userAccountControl - status konta ;19 - sAMAccountName - login ;20 - logonWorkstation - komputer ;21 - comment - komentarz ;Zdjęcie - 78x96 $LDAP_DATA = 1 action("", 0) EndIf EndFunc ;==>ldap_load_data Func ldap_user_info($user) Local $name = "" Local $LDAP_Search = 0 Local $loginname = "" Local $lastlogin = "" GUISetState(@SW_SHOW, $form_ldap) GUICtrlSetColor($LDAPLastlogon, 0x000000) $user = StringStripWS($user, 1) $user = StringStripWS($user, 2) $LDAP_Search = _ArraySearch($oLDAP, $user, 0, 0, 0, 1) If $LDAP_Search > 0 Then $loginname = $oLDAP[$LDAP_Search][19] GUICtrlSetData($ad_imie_nazwisko, $oLDAP[$LDAP_Search][0]) GUICtrlSetData($ad_dzial, $oLDAP[$LDAP_Search][1]) GUICtrlSetData($ad_przelozony, fqdn_display($oLDAP[$LDAP_Search][17])) GUICtrlSetData($ad_telefon, $oLDAP[$LDAP_Search][3]) GUICtrlSetData($ad_komorka, $oLDAP[$LDAP_Search][4]) GUICtrlSetData($ad_firma, $oLDAP[$LDAP_Search][14]) GUICtrlSetData($ad_teamviewer, $oLDAP[$LDAP_Search][21]) GUICtrlSetData($ad_email, $oLDAP[$LDAP_Search][2]) GUICtrlSetData($ad_komputer, _HexToString($oLDAP[$LDAP_Search][20])) GUICtrlSetData($ad_stanowisko, $oLDAP[$LDAP_Search][13]) ;Zdjęcie LDAP_Photo($user, $ad_info_img) ; Data logowania $lastlogin = get_user_last_login($loginname) GUICtrlSetData($LDAPLastlogon, "Ostatnie logowanie w AD: " & $lastlogin) If StringInStr($lastlogin, @MDAY & "-" & @MON & "-" & @YEAR) Then GUICtrlSetColor($LDAPLastlogon, 0x77BD84) EndIf EndIf While 1 $GUIMsg = GUIGetMsg() Switch $GUIMsg Case $GUI_EVENT_CLOSE GUISetState(@SW_HIDE, $form_ldap) GUICtrlSetImage($ad_info_img, "") GUICtrlSetData($LDAPLastlogon, "Ostatnia data logowania w AD:") ExitLoop Case $ad_zamknij GUISetState(@SW_HIDE, $form_ldap) GUICtrlSetData($LDAPLastlogon, "Ostatnia data logowania w AD:") GUICtrlSetImage($ad_info_img, "") ExitLoop Case $ad_teamviewer tv_clip(GUICtrlRead($ad_teamviewer)) EndSwitch WEnd EndFunc ;==>ldap_user_info Func fqdn_display($fqdn) Local $convert = "" Local $przecinek = 0 $przecinek = StringInStr($fqdn, ",") $convert = StringMid($fqdn, 4, $przecinek - 4) Return $convert EndFunc ;==>fqdn_display Func LDAP_Photo($username, $ctrl_ID) If $username = "Anna Burdzy" Then $username = "Anna Król" Local $hOPN_THUMBNAIL Local $sPIC_USERIMAGE = @TempDir & "\UserTile.jpg" Local $LDAP_User = "" Local $pic = 0 Local $LDAP_Search = 0 $username = StringStripWS($username, 1) $username = StringStripWS($username, 2) ;Szukamy użytkownika $LDAP_Search = _ArraySearch($oLDAP, $username, 0, 0, 0, 1) If $LDAP_Search > 0 Then $oADO_USERIMAGE = $oLDAP[$LDAP_Search][15] $hOPN_THUMBNAIL = FileOpen($sPIC_USERIMAGE, 26) FileWrite($hOPN_THUMBNAIL, $oADO_USERIMAGE) FileClose($hOPN_THUMBNAIL) GUICtrlSetImage($ctrl_ID, "") GUICtrlSetImage($ctrl_ID, $sPIC_USERIMAGE) FileDelete($sPIC_USERIMAGE) Else ; MsgBox(16, "Problem", "Nie ma takiego użytkownika w AD!") GUICtrlSetImage($ctrl_ID, "") EndIf EndFunc ;==>LDAP_Photo Func tv_clip($data) Local $tv = "" $data = StringTrimLeft($data, 6) $data = StringStripWS($data, 1) $data = StringStripWS($data, 2) ClipPut($data) $mousepos = MouseGetPos() ToolTip("TeamViewer ID skopiowany do schowka.", $mousepos[0], $mousepos[1], "TeamViewer ID", 1) Sleep(1000) ToolTip("") EndFunc ;==>tv_clip Func czas_statusu_zlecenia($id) Local $sMySqlStatement = "" Local $aKomentarz = "" Local $last_kom = "" Local $start_date = "" Local $end_date = "" Local $diff = "" Local $godziny = "" Local $minuty = "" $sMySqlStatement = "SELECT * FROM komentarze WHERE numer_zlec=" & "'" & $id & "' ORDER by data desc limit 1;" $aKomentarz = _EzMySql_GetTable2d($sMySqlStatement) ; Pobranie listy zleceń z tablicy SQL $last_kom = $aKomentarz[1][1] $start_date = StringReplace($last_kom, "-", "/") $end_date = @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC $diff = _DateDiff("n", $start_date, $end_date) $godziny = Floor($diff / 60) $minuty = Mod($diff, 60) Return $godziny & "h " & $minuty & "min" EndFunc ;==>czas_statusu_zlecenia Func lv_disable($opt) Local $lv_pos = "" Local $lv_x = "" Local $lv_y = "" Local $lv_sz = "" Local $lv_wys = "" If $opt = 1 Then $lv_pos = ControlGetPos($GUI, "", $lvListaZlecen) $lv_x = $lv_pos[0] $lv_y = $lv_pos[1] $lv_sz = $lv_pos[2] $lv_wys = $lv_pos[3] $lv_disable = GUICtrlCreateLabel("", $lv_x, $lv_y, $lv_sz, $lv_wys) GUICtrlSetState($lv_disable, $GUI_ONTOP) Else GUICtrlDelete($lv_disable) EndIf EndFunc ;==>lv_disable Func LDAP_Search() GUISetState(@SW_SHOW, $form_ldap_search) Local $search_data = "" $search_data = GUICtrlRead($iLDAP_szukaj) ; dane do wyszukania w LDAP Local $sLDAP = 0 If $search_data <> "" Then GUICtrlSetData($ad_search_fraza, "Szukana fraza: " & $search_data) GUICtrlSetColor($ad_search_fraza, 0xFF0000) $sLDAP = _ArraySearch($oLDAP, $search_data, 0, 0, 0, 1) If $sLDAP > 0 Then ; coś jest LDAP_Search_pokaz($sLDAP) While 1 $GUIMsg_LDAP_search = GUIGetMsg() Switch $GUIMsg_LDAP_search Case $GUI_EVENT_CLOSE GUISetState(@SW_HIDE, $form_ldap_search) ;------------------------------------------czyszczenie pól GUICtrlSetData($ad_search_imie_nazwisko, "") GUICtrlSetData($ad_search_dzial, "") GUICtrlSetData($ad_search_przelozony, "") GUICtrlSetData($ad_search_telefon, "") GUICtrlSetData($ad_search_komorka, "") GUICtrlSetData($ad_search_firma, "") GUICtrlSetData($ad_search_teamviewer, "") GUICtrlSetData($ad_search_email, "") GUICtrlSetData($ad_search_komputer, "") GUICtrlSetImage($ad_search_img, "") ;--------------------------------------------------------- ExitLoop Case $ad_search_zamknij GUISetState(@SW_HIDE, $form_ldap_search) ;------------------------------------------czyszczenie pól GUICtrlSetImage($ad_search_img, "") GUICtrlSetData($ad_search_imie_nazwisko, "") GUICtrlSetData($ad_search_dzial, "") GUICtrlSetData($ad_search_przelozony, "") GUICtrlSetData($ad_search_telefon, "") GUICtrlSetData($ad_search_komorka, "") GUICtrlSetData($ad_search_firma, "") GUICtrlSetData($ad_search_teamviewer, "") GUICtrlSetData($ad_search_email, "") GUICtrlSetData($ad_search_komputer, "") GUICtrlSetImage($ad_search_img, "") ;--------------------------------------------------------- ExitLoop Case $ad_search_next $sLDAP = _ArraySearch($oLDAP, $search_data, $sLDAP + 1, 0, 0, 1) If $sLDAP > 0 Then LDAP_Search_pokaz($sLDAP) Else MsgBox(16, "Książka adresowa", "Brak kolejnych wyników wyszukiwania!") EndIf Case $ad_search_teamviewer tv_clip(GUICtrlRead($ad_search_teamviewer)) EndSwitch WEnd Else MsgBox(16, "Książka adresowa", "Brak wyników wyszukiwania!") GUISetState(@SW_HIDE, $form_ldap_search) EndIf EndIf EndFunc ;==>LDAP_Search Func LDAP_Search_pokaz($id) $user = $oLDAP[$id][0] $user = StringStripWS($user, 1) $user = StringStripWS($user, 1) GUICtrlSetImage($ad_search_img, "") GUICtrlSetData($ad_search_imie_nazwisko, $user) GUICtrlSetData($ad_search_dzial, $oLDAP[$id][1]) GUICtrlSetData($ad_search_przelozony, fqdn_display($oLDAP[$id][17])) GUICtrlSetData($ad_search_telefon, $oLDAP[$id][3]) GUICtrlSetData($ad_search_komorka, $oLDAP[$id][4]) GUICtrlSetData($ad_search_firma, $oLDAP[$id][14]) GUICtrlSetData($ad_search_teamviewer, $oLDAP[$id][21]) GUICtrlSetData($ad_search_email, $oLDAP[$id][2]) GUICtrlSetData($ad_search_stanowisko, $oLDAP[$id][13]) GUICtrlSetData($ad_search_komputer, _HexToString($oLDAP[$id][20])) ;Zdjęcie LDAP_Photo($user, $ad_search_img) EndFunc ;==>LDAP_Search_pokaz Func login() action("Loguję do serwisu...", 1) Local $ldap_srv = "xx.xx.1.251" Local $ldap_usr = GUICtrlRead($Ilogin) Local $ldap_psw = GUICtrlRead($iHaslo) Local $ldap_dn = "CN=Users,DC=MAGODC" Local $result = 0 $result = _AD_Open($ldap_usr, $ldap_psw, "", $ldap_srv) action("Loguję do serwisu...", 0) If $result = 1 Then ; zalogowanie udane $operator = _AD_GetObjectAttribute($ldap_usr, "cn") _AD_Close() Return 1 Else MsgBox(16, "Logowanie", "Błędny użytkownik lub hasło!") Return 0 EndIf EndFunc ;==>login Func check_status() Local $sync_time = server_last_sync_time() utworz_LV_lista_zlecen() ; odswiezenie listy zlecen If $sync_time > $global_server_sync_time Then ;MsgBox(0, $sync_time, $global_server_sync_time) Local $status = "" Local $zlecajacy = "" Local $temat = "" Local $data = "" Local $zarejestrowane = 0 For $n = 0 To UBound($aZlecenia) - 1 $status = $aZlecenia[$n][6] If $status = "Zarejestrowane" Then ; Wpadło nowe zlecenie! AdlibUnRegister("check_status") GUISetState(@SW_SHOW, $form_nowe_zgloszenie) $zlecajacy = $aZlecenia[$n][8] $zlecajacy = StringStripWS($zlecajacy, 1) $zlecajacy = StringStripWS($zlecajacy, 2) $temat = $aZlecenia[$n][4] $data = $aZlecenia[$n][1] GUICtrlSetData($nz_zlecajacy, "Zlecający: " & $zlecajacy) GUICtrlSetData($nz_data, "Data: " & $data) GUICtrlSetData($nz_temat, "Temat: " & $temat) LDAP_Photo($zlecajacy, $nowe_zlec_img) While 1 $GUIMsg_nowe_zgl = GUIGetMsg() Switch $GUIMsg_nowe_zgl Case $GUI_EVENT_CLOSE ExitLoop Case $nz_ok ExitLoop EndSwitch WEnd GUISetState(@SW_HIDE, $form_nowe_zgloszenie) WinActivate($GUI, "") ;_GUICtrlListView_ClickItem($lvListaZlecen, $n - 1) lv_select($n - 1) $zarejestrowane = 1 AdlibRegister("check_status", 60000) ; Ponowne zarejtrowanie funkcji sprawdzania ExitLoop EndIf Next $global_server_sync_time = $sync_time ; Ustawienie globalnej zmiennej ostatniej synchronizacji serwera ;_GUICtrlListView_ClickItem($lvListaZlecen, $zlecenie_ostatnio_wybrane) ; Zaznaczenie na LV tego co było wcześniej Return $zarejestrowane EndIf EndFunc ;==>check_status Func komentarze($id) Local $numer_zlec = "" Local $sMySqlStatement = "" Local $row = "" Local $lv_item = "" Local $status = "" Local $temat = "" Local $zlecajacy = "" $global_selected_id = $id $numer_zlec = $aZlecenia[$id + 1][0] $status = $aZlecenia[$id + 1][6] $temat = $aZlecenia[$id + 1][4] $zlecajacy = $aZlecenia[$id + 1][8] If Not WinActive($form_komentarze, "") Then GUISetState(@SW_SHOW, $form_komentarze) WinSetTitle($form_komentarze, "", "Komentarze: " & $numer_zlec & " | " & $temat & " | " & $zlecajacy & " | " & $status) ;Ustawienie statusu w oknie komentarzy zgodnie ze statusem zlecenia GUICtrlSetData($cKomentarze, $status) $global_status_zlecenia = $status EndIf ;Ustawienie zmiennych globalnych $global_numer_zlecenia = $numer_zlec $sMySqlStatement = "SELECT * FROM komentarze WHERE numer_zlec='" & $numer_zlec & "' ORDER BY data DESC;" $aKomentarze = "" $aKomentarze = _EzMySql_GetTable2d($sMySqlStatement) ; Pobranie listy zleceń z tablicy SQL ;_ArrayDisplay($aKomentarze) _GUICtrlListView_BeginUpdate($lv_komentarze) _GUICtrlListView_DeleteAllItems($lv_komentarze) For $for_komentarze = 1 To UBound($aKomentarze) - 1 $row = $row & $aKomentarze[$for_komentarze][1] & "|" ; data $row = $row & $aKomentarze[$for_komentarze][2] & "|" ; zglaszajacy $row = $row & $aKomentarze[$for_komentarze][3] & "|" ; opis $row = $row & $aKomentarze[$for_komentarze][4] ; zalacznik $lv_item = GUICtrlCreateListViewItem($row, $lv_komentarze) If StringInStr($row, "załącznik") Then GUICtrlSetColor($lv_item, 0xFF9900) EndIf If StringInStr($row, "Paweł Dacka") Or StringInStr($row, "Krzysztof Usarkiewicz") Or StringInStr($row, "Małgorzata Świderska") Then GUICtrlSetColor($lv_item, 0x77BD84) EndIf If StringInStr($row, "zmiana statusu") Then GUICtrlSetColor($lv_item, 0xFF9900) EndIf If StringInStr($row, "zmiana statusu zgłoszenia:") Then GUICtrlSetColor($lv_item, 0xE1E1E1) EndIf If StringInStr($row, "Info techniczne:") Then GUICtrlSetColor($lv_item, 0x0063B1) EndIf $row = "" Next _GUICtrlListView_EndUpdate($lv_komentarze) ; Ustawienie rozmiarów wybranych kolumn _GUICtrlListView_SetColumnWidth($lv_komentarze, 0, $LVSCW_AUTOSIZE) _GUICtrlListView_SetColumnWidth($lv_komentarze, 2, $LVSCW_AUTOSIZE) EndFunc ;==>komentarze Func komentarze_szczegoly($index) Local $komentarz = "" Local $zalacznik = "" Local $sMySqlStatement = "" Local $zalacznik_id = "" Local $extension = "" Local $filename = 0 $komentarz = $aKomentarze[$index + 1][3] $zalacznik = $aKomentarze[$index + 1][4] If $zalacznik <> "" Then ; sprawdzamy czy wiersz zawiera zalacznik $que = MsgBox(36, "Załącznik", "Komentarz zawiera załącznik. Otworzyć go ?") If $que = 6 Then ; Pobranie rozszeżenia załącznika ;$extension = StringReplace(StringRight($zalacznik, 4), ".", "") $sMySqlStatement = "select zalacznik_id from komentarze where zalacznik='" & $zalacznik & "';" $zalacznik_id = _EzMySql_GetTable2d($sMySqlStatement) ; Pobranie ID załącznika $filename = $zalacznik_id[1][0] ;Sprawdzamy czy jest jeden plik czy kilka If StringInStr($filename, "|") > 0 Then $files = StringSplit($filename, "|") For $n = 1 To UBound($files) - 1 ShellExecute($repo_path & $files[$n]) Next Else ; Jest jeden ShellExecute($repo_path & $zalacznik_id[1][0]) EndIf Else ;Pokazujemy opis komentarza GUISetState(@SW_SHOW, $form_komentarz_view) GUICtrlSetData($lKomentarz_Pelny, $komentarz) EndIf Else ;Pokazujemy opis komentarza GUISetState(@SW_SHOW, $form_komentarz_view) GUICtrlSetData($lKomentarz_Pelny, $komentarz) EndIf EndFunc ;==>komentarze_szczegoly Func Komentarze_zapisz() Local $status_gui = "" Local $nowy_komentarz = "" Local $sMySqlStatement = "" Local $row = "" Local $comment = "" Local $status_convert = "" Local $data = "" ; Pobranie statusu z GUI $status_gui = GUICtrlRead($cKomentarze) $data = @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC ; ================================================================= Porównanie statusów i zmiana If $status_gui <> $global_status_zlecenia Then ; dopisanie komentarza o zmianie statusu w bazie SQL ;Konwersja komentarza na komentarz d.mago ;$status_convert = statusy_zgloszenia_zmiana($global_status_zlecenia, $status_gui) ; Dodanie komentarza o zmianie statusu do bazy SQL $comment = "[::] [" & $data & "] [" & $operator & "] " & @CRLF & "Zmiana statusu zgłoszenia na " & $status_gui & "." $comment_len = StringLen($comment) $row = "'" & $global_numer_zlecenia & "','" & $data & "','" & $operator & "','" & $comment & "','','','" & $comment_len & "'" $sMySqlStatement = "INSERT INTO komentarze (numer_zlec, data, zglaszajacy, opis, zalacznik, zalacznik_id, komentarz_id) VALUES (" & $row & ");" If Not _EzMySql_Exec($sMySqlStatement) Then MsgBox(0, "Error inserting data to Table", "Error: " & @error & @CR & "Error string: " & _EzMySql_ErrMsg()) Exit EndIf ; zmienie statusu zlecenia w bazie $sMySqlStatement = "UPDATE zlecenia SET status = '" & $status_gui & "' WHERE numer = '" & $global_numer_zlecenia & "';" If Not _EzMySql_Exec($sMySqlStatement) Then MsgBox(0, "Error inserting data to Table", "Error: " & @error & @CR & "Error string: " & _EzMySql_ErrMsg()) Exit EndIf $global_status_zlecenia = $status_gui ; Ustawienie realizującego na osobę, która zmieniła status $sMySqlStatement = "update zlecenia set realizujacy='" & $operator & "' where numer = '" & $global_numer_zlecenia & "';" If Not _EzMySql_Exec($sMySqlStatement) Then MsgBox(0, "Error inserting data to Table", "Error: " & @error & @CR & "Error string: " & _EzMySql_ErrMsg()) Exit EndIf komentarze($global_selected_id) ; odświeżenie listy komentarzy EndIf ;========================================================================================= Nowy komentarz ; Sprawdzenie czy jest coś wpisane w polu nowy komentarz $nowy_komentarz = GUICtrlRead($iNowy_komentarz) If $nowy_komentarz <> "" Then ; Dopisanie nowego komentarza w bazie SQL dla aktualnego zlecenia $comment = "[::] [" & $data & "] [" & $operator & "] Nowy komentarz: " & @CRLF & $nowy_komentarz $comment = StringReplace($comment, "'", "''") ; zabezpiecznie znaku apostrów aby móc wpisać go do SQL $comment_len = StringLen($comment) $row = "'" & $global_numer_zlecenia & "','" & @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & "','" & $operator & "','" & $comment & "','','','" & $comment_len & "'" $sMySqlStatement = "INSERT INTO komentarze (numer_zlec, data, zglaszajacy, opis, zalacznik, zalacznik_id, komentarz_id) VALUES (" & $row & ");" If Not _EzMySql_Exec($sMySqlStatement) Then MsgBox(0, "Error inserting data to Table", "Error: " & @error & @CR & "Error string: " & _EzMySql_ErrMsg()) Exit EndIf GUICtrlSetData($iNowy_komentarz, "") komentarze($global_selected_id) ; odświeżenie listy komentarzy EndIf EndFunc ;==>Komentarze_zapisz Func get_user_last_login($username) Local $LDAPUserLastLogon = "" Local $data = "" Local $czas $LDAPUserLastLogon = _AD_GetLastLoginDate($username) $data = StringLeft($LDAPUserLastLogon, 8) $czas = StringRight($LDAPUserLastLogon, 6) $czas = StringLeft($czas, 2) & ":" & StringRight($czas, 4) $czas = StringLeft($czas, 5) $rok = StringLeft($data, 4) $mies = StringMid($data, 5, 2) $dzien = StringRight($data, 2) Return $dzien & "-" & $mies & "-" & $rok & " " & $czas EndFunc ;==>get_user_last_login Func statusy_zgloszenia_zmiana($status1, $status2) ;do -realizowane ;rej - zarejestrowane ;block - oczekujące ;suspended - wstrzymane ;rejected - odrzucone ;MsgBox(0, '"' & $status1 & '"', '"' & $status2 & '"') If $status1 = "Oczekujące" And $status2 = "Wstrzymane" Then $status_block_suspended = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] BLOCK -> SUSPENDED" Return $status_block_suspended EndIf If $status1 = "Oczekujące" And $status2 = "Realizowane" Then $status_block_do = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] BLOCK -> DO" Return $status_block_do EndIf If $status1 = "Oczekujące" And $status2 = "Zarejestrowane" Then $status_block_rej = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] BLOCK -> REJ" Return $status_block_rej EndIf If $status1 = "Oczekujące" And $status2 = "Odrzucone" Then $status_block_rejected = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] BLOCK -> REJECTED" Return $status_block_rejected EndIf ;------------------------------------------------------------------------------------------------------ If $status1 = "Wstrzymane" And $status2 = "Oczekujące" Then $status_suspended_block = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] SUSPENDED -> BLOCK" Return $status_suspended_block EndIf If $status1 = "Wstrzymane" And $status2 = "Zarejestrowane" Then $status_suspended_rej = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] SUSPENDED -> REJ" Return $status_suspended_rej EndIf If $status1 = "Wstrzymane" And $status2 = "Realizowane" Then $status_suspended_do = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] SUSPENDED -> DO" Return $status_suspended_do EndIf If $status1 = "Wstrzymane" And $status2 = "Odrzucone" Then $status_suspended_rejected = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] SUSPENDED -> REJECTED" Return $status_suspended_rejected EndIf ;------------------------------------------------------------------------------------------------------ If $status1 = "Zarejestrowane" And $status2 = "Wstrzymane" Then $status_rej_suspended = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] REJ -> SUSPENDED" Return $status_rej_suspended EndIf If $status1 = "Zarejestrowane" And $status2 = "Oczekujące" Then $status_rej_block = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] REJ -> BLOCK" Return $status_rej_block EndIf If $status1 = "Zarejestrowane" And $status2 = "Odrzucone" Then $status_rej_rejected = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] REJ -> REJECTED" Return $status_rej_rejected EndIf If $status1 = "Zarejestrowane" And $status2 = "Realizowane" Then $status_rej_do = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] REJ -> DO" Return $status_rej_do EndIf ;------------------------------------------------------------------------------------------------------ If $status1 = "Odrzucone" And $status2 = "Realizowane" Then $status_rejected_do = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] REJECTED -> DO" Return $status_rejected_do EndIf If $status1 = "Odrzucone" And $status2 = "Wstrzymane" Then $status_rejected_suspended = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] REJECTED -> SUSPENDED" Return $status_rejected_suspended EndIf If $status1 = "Odrzucone" And $status2 = "Oczekujące" Then $status_rejected_block = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] REJECTED -> BLOCK" Return $status_rejected_block EndIf If $status1 = "Odrzucone" And $status2 = "Zarejestrowane" = "Wstrzymane" Then $status_rejected_rej = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] REJECTED -> REJ" Return $status_rejected_rej EndIf ;------------------------------------------------------------------------------------------------------ If $status1 = "Realizowane" And $status2 = "Odrzucone" Then $status_do_rejected = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] DO -> REJECTED" Return $status_do_rejected EndIf If $status1 = "Realizowane" And $status2 = "Wstrzymane" Then $status_do_suspended = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] DO -> SUSPENDED" Return $status_do_suspended EndIf If $status1 = "Realizowane" And $status2 = "Oczekujące" Then $status_do_block = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] DO -> BLOCK" Return $status_do_block EndIf If $status1 = "Realizowane" And $status2 = "Zarejestrowane" Then $status_do_rej = "Zmiana statusu zgłoszenia: [pd_Status_Ticket] DO -> REJ" Return $status_do_rej EndIf EndFunc ;==>statusy_zgloszenia_zmiana Func status_czas($numer_zlec) ; Funkcja podlicza czas poświęcony na realizację zlecenia Local $minuty = "" Local $godziny = "" Local $sMySqlStatement = "" Local $astatus_czas = "" Local $start = "" Local $stop = "" Local $coment = "" Local $czas_statusu = 0 $sMySqlStatement = "SELECT * FROM komentarze WHERE numer_zlec='" & $numer_zlec & "' ORDER BY data ASC;" $astatus_czas = _EzMySql_GetTable2d($sMySqlStatement) ; Pobranie listy zleceń z tablicy SQL ;_ArrayDisplay($astatus_czas) For $st = 0 To UBound($astatus_czas) - 1 $coment = $astatus_czas[$st][3] If StringInStr($coment, "-> DO") Then ; Znak rozpoaczęcia statusu Realizowane $start = $astatus_czas[$st][1] $start = StringReplace($start, "-", "/") For $stb = $st + 1 To UBound($astatus_czas) - 1 ;Szukamy końca statusu $coment = $astatus_czas[$stb][3] If StringInStr($coment, "Zmiana statusu zgłoszenia:") Then ; Koniec trwania statusu $stop = $astatus_czas[$stb][1] $stop = StringReplace($stop, "-", "/") $roznica = _DateDiff("n", $start, $stop) $czas_statusu = $czas_statusu + $roznica ;MsgBox(0, "","start: " & $start & @crlf & "Stop: " & $stop& @crlf & "Rożnica: " & $roznica) $st = $stb $start = "" $stop = "" ExitLoop EndIf Next EndIf Next If $start <> "" And $stop = "" Then ; Brakuje czasu końcowego więc ustalamy czas bieżący $stop = @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC $roznica = _DateDiff("n", StringReplace($start, "-", "/"), StringReplace($stop, "-", "/")) $czas_statusu = $czas_statusu + $roznica EndIf ;Policzenie czasu If $czas_statusu < 60 Then Return $czas_statusu & " min" Else $godziny = Floor($czas_statusu / 60) $minuty = Mod($czas_statusu, 60) Return $godziny & " h" & " " & $minuty & " min" EndIf EndFunc ;==>status_czas Func zapisz_konfig() ; zapisanie parametrów okna i kolumn Local $window_info = "" Local $window_sz = "" Local $window_wys = "" Local $col_size = "" Local $ini_path = @ScriptDir & "\d.mago_sql_client.ini" $window_info = WinGetPos($gui, "") $window_x = $window_info[0] ; Szerokość $window_y = $window_info[1] ; Wysokość $window_sz = $window_info[2] ; Szerokość $window_wys = $window_info[3] ; Wysokość ;MsgBox(0, "", $ini_path) For $col = 0 To _GUICtrlListView_GetColumnCount($lvListaZlecen) - 1 $col_size = _GUICtrlListView_GetColumnWidth($lvListaZlecen, $col) IniWrite($ini_path, "Kolumny", $col, $col_size) Next IniWrite($ini_path, "Okno", "X", $window_x) IniWrite($ini_path, "Okno", "Y", $window_y) IniWrite($ini_path, "Okno", "Szerokosc", $window_sz) IniWrite($ini_path, "Okno", "Wysokosc", $window_wys) EndFunc ;==>zapisz_konfig Func odczytaj_konfig() ; odczytanie parametrów okna i kolumn Local $ini_path = @ScriptDir & "\d.mago_sql_client.ini" Local $col_width = "" If FileExists($ini_path) Then For $col = 0 To _GUICtrlListView_GetColumnCount($lvListaZlecen) - 1 $col_width = IniRead($ini_path, "Kolumny", $col, "") ;msgbox(0,$col,$col_width) _GUICtrlListView_SetColumnWidth($lvListaZlecen, $col, Number($col_width)) Next WinMove($GUI, "", IniRead($ini_path, "Okno", "X", ""), IniRead($ini_path, "Okno", "Y", ""), IniRead($ini_path, "Okno", "Szerokosc", ""), IniRead($ini_path, "Okno", "Wysokosc", "")) EndIf EndFunc ;==>odczytaj_konfig Func server_sync_status() $sMySqlStatement = "select stop,status from Logi order by stop DESC limit 1;" $aSyncStatus = _EzMySql_GetTable2d($sMySqlStatement) ; Pobranie listy zleceń z tablicy SQL ; _ArrayDisplay($aSyncStatus) $S1 = $aSyncStatus[1][1] ; Status $S2 = $aSyncStatus[1][0] ; Data i godzina $godzina = StringRight($S2, 8) $godzina = StringLeft($godzina, 5) Return "SSync: " & $godzina & " " & $S1 EndFunc ;==>server_sync_status Func server_last_sync_time() Local $S1 = "" Local $S2 = "" Local $S3 = "" $sMySqlStatement = "select Usluga, stop,status from Logi WHERE usluga = 'sync-exit' order by stop DESC limit 1;" $aSyncStatus = _EzMySql_GetTable2d($sMySqlStatement) ; Pobranie listy zleceń z tablicy SQL ;_ArrayDisplay($aSyncStatus) $S1 = $aSyncStatus[1][0] ; Usługa $S2 = $aSyncStatus[1][1] ; Data i godzina $S3 = $aSyncStatus[1][2] ; Status ;MsgBox(0, "", $S1 & $S2) ; Usunięcie spacji, myślników i dwukropków $S2 = StringReplace($S2, " ", "") $S2 = StringReplace($S2, "-", "") $S2 = StringReplace($S2, ":", "") Return $S2 EndFunc ;==>server_last_sync_time Func status_user() Local $SQL_Get = "" $SQL_Get = "SELECT * FROM komentarze WHERE numer_zlec = '2020/017277' and opis LIKE '[::]%Zmiana statusu zg³oszenia na%' ORDER by data DESC LIMIT 1" EndFunc ;==>status_user Func menu_zmien_status($status_menu) Local $sMySqlStatement = "" Local $row = "" Local $comment = "" Local $data = "" Local $status = "" Local $comment_len = 0 Local $SQLquery = "" Local $SQL_zlecenie_status = "" Local $numer_zlec = "" $numer_zlec = $aZlecenia[_GUICtrlListView_GetSelectedIndices($lvListaZlecen) + 1][0] ; numer aktualnego zlecenia ;****************************************** $SQLquery = "SELECT status FROM zlecenia WHERE numer =" & "'" & $numer_zlec & "'" $SQL_zlecenie_status = _EzMySql_GetTable2d($SQLquery) ; tablica ze zleceniami w SQL If UBound($SQL_zlecenie_status) > 1 Then $sql_status = $SQL_zlecenie_status[1][0] ; status zlecenia w SQL Else MsgBox(16, "Problem!", "Problem z pobraniem statusu zlecenia z SQL!") Exit EndIf ;******************************************* $status = $sql_status $data = @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC ; ================================================================= Porównanie statusów i zmiana If $status_menu <> $status Then $comment = "[::] [" & $data & "] [" & $operator & "] " & @CRLF & "Zmiana statusu zgłoszenia na " & $status_menu & "." $comment_len = StringLen($comment) $row = "'" & $numer_zlec & "','" & $data & "','" & $operator & "','" & $comment & "','','','" & $comment_len & "'" $sMySqlStatement = "INSERT INTO komentarze (numer_zlec, data, zglaszajacy, opis, zalacznik, zalacznik_id, komentarz_id) VALUES (" & $row & ");" If Not _EzMySql_Exec($sMySqlStatement) Then MsgBox(0, "Error inserting data to Table", "Error: " & @error & @CR & "Error string: " & _EzMySql_ErrMsg()) Exit EndIf ; zmienie statusu zlecenia w bazie $sMySqlStatement = "UPDATE zlecenia SET status = '" & $status_menu & "' WHERE numer = '" & $numer_zlec & "';" If Not _EzMySql_Exec($sMySqlStatement) Then MsgBox(0, "Error inserting data to Table", "Error: " & @error & @CR & "Error string: " & _EzMySql_ErrMsg()) Exit EndIf ; Ustawienie realizującego na osobę, która zmieniła status $sMySqlStatement = "update zlecenia set realizujacy='" & $operator & "' where numer = '" & $numer_zlec & "';" If Not _EzMySql_Exec($sMySqlStatement) Then MsgBox(0, "Error inserting data to Table", "Error: " & @error & @CR & "Error string: " & _EzMySql_ErrMsg()) Exit EndIf ; ------------------------------------------------ Dopisanie komentarza dla statusu 'wstrzymane' If $status_menu = "Wstrzymane" Then ; Dopisanie nowego komentarza w bazie SQL dla aktualnego zlecenia $comment = "[::] [" & $data & "] [" & $operator & "] Nowy komentarz: " & @CRLF & "Zajmiemy się tym w wolnej chwili." $comment_len = StringLen($comment) $row = "'" & $numer_zlec & "','" & @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & "','" & $operator & "','" & $comment & "','','','" & $comment_len & "'" $sMySqlStatement = "INSERT INTO komentarze (numer_zlec, data, zglaszajacy, opis, zalacznik, zalacznik_id, komentarz_id) VALUES (" & $row & ");" If Not _EzMySql_Exec($sMySqlStatement) Then MsgBox(0, "Error inserting data to Table", "Error: " & @error & @CR & "Error string: " & _EzMySql_ErrMsg()) Exit EndIf EndIf utworz_LV_lista_zlecen() ; odświeżenie listy Else MsgBox(16, "Zmiana statusu", "Zlecenie już ma taki status!" & @CRLF & "Ktoś był szybszy ? ;)") EndIf EndFunc ;==>menu_zmien_status Func menu_zlecenia() GUICtrlDelete($ContextMenu) $ContextMenu = GUICtrlCreateContextMenu($lvListaZlecen) $menu_otworz = GUICtrlCreateMenuItem("Otwórz", $ContextMenu) $menu_status = GUICtrlCreateMenu("Status", $ContextMenu) $menu_status_realizowane = GUICtrlCreateMenuItem("Realizowane", $menu_status) $menu_status_wstrzymane = GUICtrlCreateMenuItem("Wstrzymaj (W wolnej chwili)", $menu_status) $menu_separator = GUICtrlCreateMenuItem("", $ContextMenu) $menu_info = GUICtrlCreateMenuItem("Informacja", $ContextMenu) $menu_separator = GUICtrlCreateMenuItem("", $ContextMenu) $menu_teamviewer = GUICtrlCreateMenu("TeamViewer", $ContextMenu) $menu_teamviewer_polacz = GUICtrlCreateMenuItem("Połącz", $menu_teamviewer) EndFunc ;==>menu_zlecenia Func team_viewer($user) Local $tv_exe = "C:\Program Files (x86)\TeamViewer\TeamViewer.exe" Local $sLDAP = "" Local $TVID = "" $sLDAP = _ArraySearch($oLDAP, $user, 0, 0, 0, 1) If $sLDAP > 0 Then ; coś jest $TVID = $oLDAP[$sLDAP][21] $TVID = StringStripWS($TVID, 8) $TVID = StringRight($TVID, StringLen($TVID) - 5) action("Próba połączenia z ID TV zgłaszającego", 1) ShellExecute($tv_exe, "--id " & $TVID) Sleep(1500) action("", 0) Else MsgBox(16, "Połączenie TeamViewer", "Brak informacji o ID Teamviewer w koncie zgłaszającego!") EndIf EndFunc ;==>team_viewer