diff --git a/Android/BewoMitarbeiterApp/app/app.iml b/Android/BewoMitarbeiterApp/app/app.iml index dadeec421..bf9062721 100644 --- a/Android/BewoMitarbeiterApp/app/app.iml +++ b/Android/BewoMitarbeiterApp/app/app.iml @@ -64,14 +64,6 @@ - - - - - - - - @@ -80,6 +72,14 @@ + + + + + + + + @@ -96,7 +96,6 @@ - diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/BeWoChatApplication.java b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/BeWoChatApplication.java index 2172cce1e..cad7f339e 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/BeWoChatApplication.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/BeWoChatApplication.java @@ -17,10 +17,8 @@ public class BeWoChatApplication extends Application { Thread.UncaughtExceptionHandler uncaughtExceptionHandler = new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { - - //TODO: Notifications löschen - Log.e("UNCAUGHT_EXCEPTION", "Eine unbehandelte Ausnahme ist aufgetreten!"); + ex.printStackTrace(); NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ChatActivity.java b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ChatActivity.java index 7dd1d0c92..660a4f427 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ChatActivity.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/ChatActivity.java @@ -182,7 +182,14 @@ public class ChatActivity extends ActionBarActivity { chatMessages.add(message); adapter.notifyDataSetChanged(); } else { - SetNotify(chatPacket.ChatName, chatPacket.ChatMessage, chatPacket.SenderPersonOid, false, null, null); + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), "ChatName: " + chatPacket.ChatName, Toast.LENGTH_LONG).show(); + } + }); + + Util.SetNotify(chatPacket.ChatName, chatPacket.ChatMessage, chatPacket.SenderPersonOid, false, null, null, getApplicationContext()); } } }); @@ -201,12 +208,30 @@ public class ChatActivity extends ActionBarActivity { SocketManager.onlinePersonOids.add(chatPacket.SenderPersonOid); } + if(chatPacket.SenderPersonOid == recipientPersonOid) { + runOnUiThread(new Runnable() { + @Override + public void run() { + ImageView status = (ImageView) mCustomView.findViewById(R.id.status); + status.setImageResource(R.drawable.statusonline); + } + }); + } + break; case STATUS_NOTIFICATION_LOGOUT: if(SocketManager.onlinePersonOids.contains(chatPacket.SenderPersonOid)) { SocketManager.onlinePersonOids.remove(Integer.valueOf(chatPacket.SenderPersonOid)); } + runOnUiThread(new Runnable() { + @Override + public void run() { + ImageView status = (ImageView) mCustomView.findViewById(R.id.status); + status.setImageResource(R.drawable.statusoffline); + } + }); + break; case TEAM: listView.post(new Runnable() { @@ -252,16 +277,7 @@ public class ChatActivity extends ActionBarActivity { packet.RecipientPersonOid = recipientPersonOid; packet.MessageTimeStamp = now; -// SharedPreferences settings = getSharedPreferences(Util.PREFS_NAME, 0); - -// byte[] tenantByteArray = Base64.decode(settings.getString(Util.PREFS_TENANT_KEY, null), Base64.DEFAULT); -// ByteArrayInputStream tenantStream = new ByteArrayInputStream(tenantByteArray); - -// try { - packet.Tenant = SoapConnectionManager.User.getTenant();// SecurityUtils.decrypt(tenantStream).toString(); -// } catch (IOException | NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException e) { -// e.printStackTrace(); -// } + packet.Tenant = SoapConnectionManager.User.getTenant(); final ChatMessage message = new ChatMessage(packet.SenderPersonOid, packet.RecipientPersonOid, packet.MessageTimeStamp, packet.ChatMessage, false, 0, isTeam); @@ -369,39 +385,6 @@ public class ChatActivity extends ActionBarActivity { ReloadChatView(rn, rpoid, imageAsByteArray, blahIsTeam, tMemberOids, tMemberNames); } - public void SetNotify(String username, String message, int recipientOid, boolean isTeam, String teamMemberOids, String teamMemberNames){ - NotificationCompat.Builder mBuilder = - new NotificationCompat.Builder(this) - .setSmallIcon(R.drawable.ic_stat_name) - .setContentTitle(username) - .setContentText(message) - .setAutoCancel(true) - .setDefaults(Notification.DEFAULT_SOUND) - .setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 }) //Notification.Default_Vibrate - .setLights(Color.YELLOW, 3000, 3000) //Notification.Default_Lights - .setOngoing(true); - - Bundle bundle = new Bundle(); - bundle.putString("Name", username); - bundle.putInt("RecipientOid", recipientOid); - bundle.putBoolean("IsTeam", isTeam); - bundle.putString("TeamMemberOids", teamMemberOids); - bundle.putString("TeamMemberNames", teamMemberNames); - - Intent resultIntent = new Intent(this, ChatActivity.class); - resultIntent.putExtras(bundle); - - resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); - - PendingIntent resultPendingIntent = PendingIntent.getActivity(this.getApplicationContext(), (int) (Math.random() * 100), resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); - - NotificationManager mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); - - mBuilder.setContentIntent(resultPendingIntent); - - mNotifyMgr.notify((new Random()).nextInt(9999 - 1000) + 1000, mBuilder.build()); - } - private Bitmap GetCircleBitmap(Bitmap bitmap) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktChatActivity.java b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktChatActivity.java index a9c8c930b..13535d870 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktChatActivity.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/KontaktChatActivity.java @@ -262,6 +262,8 @@ public class KontaktChatActivity extends ListActivity { } for(ChatPerson cp : result) { + Log.i("KONTAKTLISTE", "Version: " + cp.Version); + if(!oidList.contains(cp.Oid)) { databaseHandler.addContact(new ContactListItem(cp.Name, cp.Oid, cp.IsTeam, cp.TeamMemberOids, cp.TeamMemberNames)); } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MainActivityMitarbeiter.java b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MainActivityMitarbeiter.java index 9a40b941b..de1064b65 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MainActivityMitarbeiter.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/beyondsoft/bewomitarbeiterapp/MainActivityMitarbeiter.java @@ -153,4 +153,12 @@ public class MainActivityMitarbeiter extends Activity { super.onResume(); } + + @Override + public void onBackPressed() { + SocketManager.logout(); + + finish(); + System.exit(0); + } } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/entities/ChatPerson.java b/Android/BewoMitarbeiterApp/app/src/main/java/entities/ChatPerson.java index 93bf4f6fa..08bb3e165 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/entities/ChatPerson.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/entities/ChatPerson.java @@ -9,4 +9,5 @@ public class ChatPerson { public boolean IsTeam; public String TeamMemberNames; public String TeamMemberOids; + public int Version; } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java index 00886f61f..0709df599 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/soapConnection/SoapCalls.java @@ -11,13 +11,13 @@ public class SoapCalls { public static String GET_ALL_CHAT_MESSAGES = "GetAllChatMessagesForSenderAndRecipient"; //"app4.bewoplaner.de";// - public static String DESTINATION_ADDRESS = "192.168.1.103"; + public static String DESTINATION_ADDRESS = "app4.bewoplaner.de";//"192.168.1.103"; public static int DESTINATION_PORT = 5000; - public static String TOKEN_CHECK_URL = "http://" + DESTINATION_ADDRESS + "/mobil/main/checktoken?token="; + public static String TOKEN_CHECK_URL = "https://" + DESTINATION_ADDRESS + "/mobil/main/checktoken?token="; - public static String WEB_DOKU_URL = "http://" + DESTINATION_ADDRESS + "/mobil/login/demo"; + public static String WEB_DOKU_URL = "https://" + DESTINATION_ADDRESS + "/mobil/login/demo"; public static String WSDL_TARGET_NAME = "bliblablubb.org/"; - public static String SOAP_ADDRESS = "http://" + DESTINATION_ADDRESS + "/BeWoPlanerAndroid/AndroidSoapService.asmx"; + public static String SOAP_ADDRESS = "https://" + DESTINATION_ADDRESS + "/BeWoPlanerAndroid/AndroidSoapService.asmx"; } diff --git a/Android/BewoMitarbeiterApp/app/src/main/java/util/Util.java b/Android/BewoMitarbeiterApp/app/src/main/java/util/Util.java index 38757b0c1..300bc8d71 100644 --- a/Android/BewoMitarbeiterApp/app/src/main/java/util/Util.java +++ b/Android/BewoMitarbeiterApp/app/src/main/java/util/Util.java @@ -50,6 +50,10 @@ public class Util { bundle.putString("TeamMemberOids", teamMemberOids); bundle.putString("TeamMemberNames", teamMemberNames); + //TODO: mehrere Notifications von mehrern Kontakten -> KontaktChatActivity öffnen, sonst ChatActivity + + + Intent resultIntent = new Intent(packageContext, ChatActivity.class); resultIntent.putExtras(bundle); @@ -59,6 +63,9 @@ public class Util { NotificationManager mNotifyMgr = (NotificationManager) packageContext.getSystemService(Context.NOTIFICATION_SERVICE); + + + mBuilder.setContentIntent(resultPendingIntent); mNotifyMgr.notify((new Random()).nextInt(9999 - 1000) + 1000, mBuilder.build()); diff --git a/BeWoChatServer/Server.cs b/BeWoChatServer/Server.cs index f92bebf75..52248e77e 100644 --- a/BeWoChatServer/Server.cs +++ b/BeWoChatServer/Server.cs @@ -48,7 +48,7 @@ namespace BeWoChatServer } catch (Exception e) { - Debug.WriteLine("ChatServerException (1010): " + e.Message); + WriteErrorMessageToConsole(e.Message, e.StackTrace); } } @@ -70,7 +70,7 @@ namespace BeWoChatServer } catch (SocketException e) { - Debug.WriteLine("ChatServerException (1020): " + e.Message); + WriteErrorMessageToConsole(e.Message, e.StackTrace); } } @@ -89,7 +89,7 @@ namespace BeWoChatServer } catch (Exception e) { - Debug.WriteLine("ChatServerException (1030): " + e.Message); + WriteErrorMessageToConsole(e.Message, e.StackTrace); } } @@ -199,7 +199,11 @@ namespace BeWoChatServer { try { + Console.BackgroundColor = ConsoleColor.Black; + Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(DateTime.Now + ": Chat-Nachricht erhalten"); + Console.BackgroundColor = ConsoleColor.Black; + Console.ForegroundColor = ConsoleColor.Gray; Monitor.Enter(_Lock); @@ -375,7 +379,7 @@ namespace BeWoChatServer Monitor.Exit(_Lock); } - Debug.WriteLine("ChatServerException: " + e.Message); + WriteErrorMessageToConsole(e.Message, e.StackTrace); } } @@ -389,5 +393,15 @@ namespace BeWoChatServer client.Key.Send(notificationPacket.GetDataStream()); } } + + private static void WriteErrorMessageToConsole(string message, string stackTrace) + { + Console.BackgroundColor = ConsoleColor.Black; + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine(DateTime.Now + ": " + message); + Console.WriteLine(stackTrace); + Console.BackgroundColor = ConsoleColor.Black; + Console.ForegroundColor = ConsoleColor.Gray; + } } } \ No newline at end of file diff --git a/BeWoOhneReports.v12.suo b/BeWoOhneReports.v12.suo index 4b432a8a3..95d58d4b5 100644 Binary files a/BeWoOhneReports.v12.suo and b/BeWoOhneReports.v12.suo differ diff --git a/BeWoPlanerAndroid/AndroidSoapService.asmx.cs b/BeWoPlanerAndroid/AndroidSoapService.asmx.cs index 6c8d62101..73bb59a61 100644 --- a/BeWoPlanerAndroid/AndroidSoapService.asmx.cs +++ b/BeWoPlanerAndroid/AndroidSoapService.asmx.cs @@ -129,8 +129,8 @@ namespace BeWoPlanerAndroid var employees = EmployeeService.GetAllActiveEmployeesCompact().Where(w => !Equals(w.EmployeeOid, employee.Oid.Value)); - var result = employees.Select(emp => new ChatPerson(emp.PersonOid, emp.FirstName + " " + emp.LastName, false, null, null)).ToList(); - result.AddRange(customers.Select(cus => new ChatPerson(cus.PersonOid, cus.FullName, false, null, null))); + var result = employees.Select(emp => new ChatPerson(emp.PersonOid, emp.FirstName + " " + emp.LastName, false, null, null, emp.Version)).ToList(); + result.AddRange(customers.Select(cus => new ChatPerson(cus.PersonOid, cus.FullName, false, null, null, cus.Version))); var teams = DAOFactory.SearchDAO.FindTeamsOfEmployee(employee.Oid.Value).Where(w => w.MemberList.Count > 1); @@ -153,7 +153,7 @@ namespace BeWoPlanerAndroid } } - result.Add(new ChatPerson(team.Oid.Value, team.Name, true, memberString, memberNames)); + result.Add(new ChatPerson(team.Oid.Value, team.Name, true, memberString, memberNames, team.Version.Value)); } return SerializeObject(result); @@ -176,13 +176,16 @@ namespace BeWoPlanerAndroid public string TeamMemberNames { get; set; } - public ChatPerson(long pOid, string pName, bool pIsTeam, string pTeamMemberOids, string pTeamMemberNames) + public long Version { get; set; } + + public ChatPerson(long pOid, string pName, bool pIsTeam, string pTeamMemberOids, string pTeamMemberNames, long pVersion) { - Oid = pOid; - Name = pName; - IsTeam = pIsTeam; - TeamMemberOids = pTeamMemberOids; + Oid = pOid; + Name = pName; + IsTeam = pIsTeam; + TeamMemberOids = pTeamMemberOids; TeamMemberNames = pTeamMemberNames; + Version = pVersion; } } }