public IHttpContext ResponseOut(IHttpContext context)
        {
            string payload = context.Request.Payload;
            Dictionary <string, string> args = MelBoxWeb.ReadPayload(payload);

            ReadGlobalFields(args);

            DataTable     dt      = Program.Sql.GetViewMsgSent();
            StringBuilder builder = new StringBuilder();

            builder.Append(MelBoxWeb.HtmlTablePlain(dt, false));

            string info = "<i class='w3-xxlarge w3-disabled material-icons-outlined'>storage</i> Nur Datenbank<br>" +
                          "<i class='w3-xxlarge w3-disabled material-icons-outlined'>not_started</i> bereit zum Versenden<br>" +
                          "<i class='w3-xxlarge w3-disabled material-icons-outlined'>radar</i> Warte auf Empfangsbestätigung<br>" +
                          "<i class='w3-xxlarge w3-disabled material-icons-outlined'>replay</i> wird nochmal gesendet<br>" +
                          "<i class='w3-xxlarge w3-disabled material-icons-outlined'>unpublished</i> Nachverfolgung abgebrochen<br>" +
                          "<i class='w3-xxlarge w3-disabled material-icons-outlined'>check_circle</i> Empfangsbestätigung erhalten<br>";

            builder.Append(MelBoxWeb.HtmlInfoSidebar("Sendestatus", info));
#if DEBUG
            builder.Append("<p class='w3-pink'>" + payload + "</p>");
#endif
            context.Response.SendResponse(MelBoxWeb.HtmlCanvas(builder.ToString(), dt.TableName, logedInUserName));
            return(context);
        }
        public IHttpContext ResponseOverdue(IHttpContext context)
        {
            string payload = context.Request.Payload;
            Dictionary <string, string> args = MelBoxWeb.ReadPayload(payload);

            ReadGlobalFields(args);

            DataTable     dt      = Program.Sql.GetViewMsgOverdue();
            StringBuilder builder = new StringBuilder();

            if (dt.Rows.Count == 0)
            {
                builder.Append(MelBoxWeb.HtmlAlert(3, "Keine Zeitüberschreitungen festgestellt", "Zur Zeit ist kein überwachter Sender in Verzug."));

                dt = Program.Sql.GetMonitoredContactList();
                builder.Append(MelBoxWeb.HtmlTablePlain(dt, false));
            }
            else
            {
                builder.Append(MelBoxWeb.HtmlTablePlain(dt, false));
            }

            const string info = "Den einzelnen Benutzern kann ein Wert 'Max_Inaktiv' [in Stunden] zugewiesen werden. " +
                                "Kommt von diesen Benutzern innherhalb der eingestellten Zeit keine Meldung, sollte der Meldeweg (SMS, Email) geprüft werden.";

            builder.Append(MelBoxWeb.HtmlInfoSidebar("Überwachte Meldungen", info));
#if DEBUG
            builder.Append("<p class='w3-pink'>" + payload + "</p>");
#endif
            context.Response.SendResponse(MelBoxWeb.HtmlCanvas(builder.ToString(), dt.TableName, logedInUserName));
            return(context);
        }
        public IHttpContext ResponseShiftEdit(IHttpContext context)
        {
            string payload = context.Request.Payload;
            Dictionary <string, string> args = MelBoxWeb.ReadPayload(payload);

            ReadGlobalFields(args);

            int           shiftId     = 0;
            DateTime      date        = DateTime.MinValue;
            int           shiftUserId = logedInUserId;
            DataTable     dt          = Program.Sql.GetViewShift();
            StringBuilder builder     = new StringBuilder();

            if (args.ContainsKey("selectedRow"))
            {
                if (args["selectedRow"].StartsWith("Datum_"))
                {
                    DateTime.TryParse(args["selectedRow"].ToString().Substring(6), out date);
                }
                else
                {
                    int.TryParse(args["selectedRow"].ToString(), out shiftId);
                }
            }

            if (args.ContainsKey("selectedContact"))
            {
                int.TryParse(args["selectedContact"].ToString(), out shiftUserId);
            }
            else if (args.ContainsKey("ContactId"))
            {
                int.TryParse(args["ContactId"].ToString(), out shiftUserId);
            }

            builder.Append(MelBoxWeb.HtmlFormShift(date, shiftId, shiftUserId, isAdmin));

            const string infoTitel = "Info Bereitschaft";
            const string infoText  = "Eine Einheit Bereitschaft findet immer über einen Tageswechsel statt.<br> Am ausgewählten Datum zur Stunde 'Beginn' werden Nachrichten weitergeleitet bis zur Stunde 'Ende' am Folgetag.<br>" +
                                     "Ist beim Erstellen einer neuen Bereitschaft das Kästchen 'Bereitschaftswoche' angehakt wird die Bereitschaft für die komplette Kalenderwoche erstellt, in der das ausgewählte Datum liegt.";

            builder.Append(MelBoxWeb.HtmlInfoSidebar(infoTitel, infoText));
#if DEBUG
            builder.Append("<p class='w3-pink'>" + payload + "</p>");
#endif
            context.Response.SendResponse(MelBoxWeb.HtmlCanvas(builder.ToString(), dt.TableName, logedInUserName));
            return(context);
        }