コード例 #1
0
        private void DoModification(DialogConfigBLEntities entities, AntragItem item, AntragItem.Item.SubItem x, List <string> errors)
        {
            var p = from z in entities.UserMappings
                    where z.HandyNummer == x.handyNummer && z.DatenbankId == item.Data.datenbankId
                    select z;

            if (p.Any())
            {
                var um = p.First();
                um.IsAdmin    = x.isAdmin;
                um.IsGesperrt = x.isGesperrt;
                um.Name       = x.name;
                um.Vorname    = x.vorname;
                um.ShortName  = x.shortName;
                um.Module     = x.module;
                try
                {
                    entities.SaveChanges();
                }
                catch (Exception ex)
                {
                    errors.Add(string.Format("MODIFICATION: Ausnahme: '{2}' für HandyNummer '{0}' und DatanbankId {1}", ex.Message, x.handyNummer, item.Data.datenbankId));
                }
            }
            else
            {
                errors.Add(string.Format("MODIFICATION: Keinen Eintrag in Tabelle UserMappings mit HandyNummer '{0}' und DatanbankId {1} gefunden!", x.handyNummer, item.Data.datenbankId));
            }
        }
コード例 #2
0
        private void DoAddition(DialogConfigBLEntities entities, AntragItem item, AntragItem.Item.SubItem x, List <string> errors)
        {
            var existingItem = entities.UserMappings.Find(x.handyNummer, item.Data.datenbankId);

            if (existingItem == null)
            {
                var um = new UserMapping()
                {
                    DatenbankId = item.Data.datenbankId,
                    HandyNummer = x.handyNummer,
                    IsAdmin     = x.isAdmin,
                    IsGesperrt  = x.isGesperrt,
                    Name        = x.name,
                    Vorname     = x.vorname,
                    Module      = x.module,
                    ShortName   = x.shortName
                };
                entities.UserMappings.Add(um);
                try
                {
                    entities.SaveChanges();
                }
                catch (Exception ex)
                {
                    errors.Add(string.Format("ADDITION: Ausnahme: '{2}' für HandyNummer '{0}' und DatanbankId {1}", ex.Message, x.handyNummer, item.Data.datenbankId));
                }
            }
            else
            {
                errors.Add(string.Format("ADDITION: Einen Eintrag in Tabelle UserMappings mit HandyNummer '{0}' und DatanbankId {1} existiert bereits und keine Duplizierungen sind erlaubt!", x.handyNummer, item.Data.datenbankId));
            }
        }
コード例 #3
0
ファイル: HomeController.cs プロジェクト: alejandroamrein/bhl
        private void CallSwisscomWsMockAsync(IndexViewModel model, string datenbankBez, string mandantUrl)
        {
            var ctxt = new SessionContext()
            {
                DatenbankId = model.datenbankId,
                Handynummer = model.handynummer,
                IsAdmin     = model.isAdmin,
                Shortname   = model.shortname
            };

            Session["SessionContext"] = ctxt;

            Task.Run(() =>
            {
                var enUs = new CultureInfo("en-us");
                var data = string.Format(
                    "<?xml version='1.0' encoding='utf-8' ?>" +
                    "<data>" +
                    "<user>{0}</user>" +
                    "<database>{1}</database>" +
                    "<module>{2}</module>" +
                    "<timestamp>{3}</timestamp>" +
                    "</data>",
                    model.shortname, datenbankBez, model.module, DateTime.Now.ToString(enUs.DateTimeFormat));

                var entities = new DialogConfigBLEntities();
                using (entities)
                {
                    var token = Convert.ToBase64String(Encoding.UTF8.GetBytes(data));
                    var hash  = Sign(token, _TokenSigningCertificate2);
                    var req   = new MIDRequest()
                    {
                        DatenbankId     = model.datenbankId,
                        Erfolgreich     = true,
                        Handynummer     = model.handynummer,
                        Hash            = hash,
                        IsAdmin         = model.isAdmin,
                        RequestId       = model.requestId,
                        ResponseMessage = "Mobile ID korrekt eingegeben",
                        Shortname       = model.shortname,
                        Status          = "ready",
                        //Url = "http://" + mandantUrl,
                        Url   = mandantUrl.StartsWith("http") ? mandantUrl : "http://" + mandantUrl,
                        Token = token
                    };
                    entities.MIDRequests.Add(req);
                    entities.SaveChanges();
                }
            });
        }
コード例 #4
0
ファイル: HomeController.cs プロジェクト: alejandroamrein/bhl
 private void MIDLogWrite(string msg)
 {
     if (_MIDLogSwitch.Enabled)
     {
         var log = new DialogPortal.Models.Log()
         {
             OpId  = _MIDLogOpId,
             SeqId = ++_MIDLogSeqId,
             Text  = msg
         };
         var entities = new DialogConfigBLEntities();
         using (entities)
         {
             entities.Logs.Add(log);
             entities.SaveChanges();
         }
     }
 }
コード例 #5
0
        private void DoDeletion(DialogConfigBLEntities entities, AntragItem item, AntragItem.Item.SubItem x, List <string> errors)
        {
            var p = from z in entities.UserMappings
                    where z.HandyNummer == x.handyNummer && z.DatenbankId == item.Data.datenbankId
                    select z;

            if (p.Any())
            {
                var um = p.First();
                entities.UserMappings.Remove(um);
                try
                {
                    entities.SaveChanges();
                }
                catch (Exception ex)
                {
                    errors.Add(string.Format("DELETION: Ausnahme: '{2}' für HandyNummer '{0}' und DatanbankId {1}", ex.Message, x.handyNummer, item.Data.datenbankId));
                }
            }
            else
            {
                errors.Add(string.Format("DELETION: Keinen Eintrag in Tabelle UserMappings mit HandyNummer '{0}' und DatanbankId {1} gefunden!", x.handyNummer, item.Data.datenbankId));
            }
        }
コード例 #6
0
        // GET: GetAntrag
        public ActionResult ConfirmAntrag(int antragId, string ignore)
        {
            var ignoreList = new List <string>();

            if (!string.IsNullOrEmpty(ignore))
            {
                ignoreList = ignore.Split(',').ToList();
            }
            var errors = new List <string>();

            try
            {
                var entities = new DialogConfigBLEntities();
                using (entities)
                {
                    var q = from x in entities.Antrags
                            where x.AntragId == antragId
                            select x;
                    // Aktualisieren
                    if (q.Any())
                    {
                        var a    = q.First();
                        var item = new AntragItem()
                        {
                            AntragId = antragId,
                            FormData = a.FormData
                        };
                        //
                        foreach (var x in item.Data.items)
                        {
                            if (ignoreList.Contains(x.handyNummer))
                            {
                                continue;
                            }
                            if (x.status == "modified")
                            {
                                DoModification(entities, item, x, errors);
                            }
                            else if (x.status == "added")
                            {
                                DoAddition(entities, item, x, errors);
                            }
                            else if (x.status == "deleted")
                            {
                                DoDeletion(entities, item, x, errors);
                            }
                            else
                            {
                                errors.Add(string.Format("Status '{0}' unbekannt", x.status));
                            }
                        }
                        if (errors.Count > 0)
                        {
                            return(Content(PrepareErrorMessage(errors)));
                        }
                        else
                        {
                            a.Erledigt = true;
                            entities.SaveChanges(); // wegen a.Erledigt = true!!
                            return(Content("ok"));
                        }
                    }
                    else
                    {
                        errors.Add(string.Format("Antrag in Tabelle Antrags mit antragId {0} nicht vorhanden. Keine Änderung wurde durchgeführt.", antragId));
                        return(Content(PrepareErrorMessage(errors)));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Content(PrepareErrorMessage(ex)));
            }
        }
コード例 #7
0
        // GET: Send
        public ActionResult Send(string formData)
        {
            var success      = true;
            var errorMessage = string.Empty;
            var antragNummer = 0;

            //formData = formData.Replace("&quote;", "\\'");
            //var data = JsonConvert.DeserializeObject<Dictionary<string, object>>(formData);

            /* Newtonsoft.Json.dll
             *
             *          JArray array = new JArray();                          Product product = new Product();
             *          array.Add("Manual text");                             product.Name = "Apple";
             *          array.Add(new DateTime(2000, 5, 23));                 product.Expiry = new DateTime(2008, 12, 28);
             *          JObject o = new JObject();                            product.Sizes = new string[] { "Small" };
             *          o["MyArray"] = array;                                 string json = JsonConvert.SerializeObject(product);
             *          string json = o.ToString();                           //{
             *          // {                                                  //  "Name": "Apple",
             *          //   "MyArray": [                                     //  "Expiry": "2008-12-28T00:00:00",
             *          //     "Manual text",                                 //  "Sizes": [
             *          //     "2000-05-23T00:00:00"                          //    "Small"
             *          //   ]                                                //  ]
             *          // }                                                  //}
             *
             *          string json = @"{                                     JsonSchema schema = JsonSchema.Parse(@"{
             *              'Name': 'Bad Boys',                                   'type': 'object',
             *              'ReleaseDate': '1995-4-7T00:00:00',                   'properties': {
             *              'Genres': [                                             'name': {'type':'string'},
             *              'Action',                                             'hobbies': {'type': 'array'}
             *              'Comedy'                                            }
             *              ]                                                 }");
             *          }";                                                   JObject person = JObject.Parse(@"{
             *          Movie m = JsonConvert.DeserializeObject<Movie>(json);   'name': 'James',
             *          string name = m.Name; // Bad Boys                       'hobbies': ['.NET', 'LOLCATS']
             *                                                                }");
             *                                                                bool valid = person.IsValid(schema); // true */

            try
            {
                var entities = new DialogConfigBLEntities();
                using (entities)
                {
                    var antrag = new Antrag()
                    {
                        FormData = formData,
                        Erledigt = false
                    };
                    entities.Antrags.Add(antrag);
                    entities.SaveChanges();
                    antragNummer = antrag.AntragId;

                    var smtpHost      = ConfigurationManager.AppSettings["SmtpHost"] ?? "";
                    var smtpPort      = ConfigurationManager.AppSettings["SmtpPort"] ?? "";
                    var smtpFrom      = ConfigurationManager.AppSettings["SmtpFrom"] ?? "";
                    var smtpTo        = ConfigurationManager.AppSettings["SmtpTo"] ?? "";
                    var smtpSubject   = string.Format(ConfigurationManager.AppSettings["SmtpSubject"], antragNummer);
                    var smtpUser      = ConfigurationManager.AppSettings["SmtpUser"] ?? "";
                    var smtpPassword  = ConfigurationManager.AppSettings["SmtpPassword"] ?? "";
                    var smtpBcc       = ConfigurationManager.AppSettings["SmtpBcc"] ?? "";
                    var smtpEnableSsl = (ConfigurationManager.AppSettings["SmtpEnableSsl"] ?? "") == "1";

                    var smtp = new SmtpClient(smtpHost, int.Parse(smtpPort));
                    using (smtp)
                    {
                        try
                        {
                            if (smtpUser.Length > 2)
                            {
                                smtp.Credentials = new NetworkCredential(smtpUser, smtpPassword);
                            }
                            smtp.EnableSsl = smtpEnableSsl;
                            var message = new MailMessage()
                            {
                                From       = new MailAddress(smtpFrom),
                                IsBodyHtml = false,
                                Body       = formData,
                                Subject    = smtpSubject
                            };
                            if (smtpBcc.Length > 2)
                            {
                                message.Bcc.Add(smtpBcc);
                            }
                            message.To.Add(new MailAddress(smtpTo));
                            smtp.Send(message);
                        }
                        catch (Exception ex)
                        {
                            success      = false;
                            errorMessage = ex.Message + "\nSind 'SmtpHost', 'SmtpFrom', 'SmtpTo' und 'SmtpSubject' in der Config-Datei konfugiriert?";
                        }
                    }
                    //var smtp = new SmtpClient(ConfigurationManager.AppSettings["SmtpHost"]);
                    //using (smtp)
                    //{
                    //    try
                    //    {
                    //        //smtp.EnableSsl = true;
                    //        var message = new MailMessage(
                    //            ConfigurationManager.AppSettings["SmtpFrom"],
                    //            ConfigurationManager.AppSettings["SmtpTo"],
                    //            string.Format(ConfigurationManager.AppSettings["SmtpSubject"], antragNummer),
                    //            formData);
                    //        smtp.Send(message);
                    //    }
                    //    catch (Exception ex)
                    //    {
                    //        success = false;
                    //        errorMessage = ex.Message + "\nSind 'SmtpHost', 'SmtpFrom', 'SmtpTo' und 'SmtpSubject' in der Config-Datei konfugiriert?";
                    //    }
                    //}
                }
            }
            catch (Exception ex)
            {
                success      = false;
                errorMessage = ex.Message;
            }

            var result = new
            {
                success      = success,
                errorMessage = errorMessage,
                antragNummer = antragNummer
            };

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
コード例 #8
0
ファイル: HomeController.cs プロジェクト: alejandroamrein/bhl
        private void CallSwisscomWsAsync(IndexViewModel model, string datenbankBez, string mandantUrl)
        {
            if (BypassMobileId)
            {
                CallSwisscomWsMockAsync(model, datenbankBez, mandantUrl);
                return;
            }

            var ctxt = new SessionContext()
            {
                DatenbankId = model.datenbankId,
                Handynummer = model.handynummer,
                IsAdmin     = model.isAdmin,
                Shortname   = model.shortname
            };

            Session["SessionContext"] = ctxt;

            var certDir = Server.MapPath("~/Certificates");

            Task.Run(() =>
            {
                var message = string.Format("DIALOG: {0}", ConfigurationManager.AppSettings["MobileIdText"]);
                var mid     = new SwisscomMobileID(true, true, model.handynummer, message, "de", Server.MapPath("/"), certDir);
                try
                {
                    var entities = new DialogConfigBLEntities();
                    using (entities)
                    {
                        var req = new MIDRequest()
                        {
                            DatenbankId     = model.datenbankId,
                            Erfolgreich     = false,
                            Handynummer     = model.handynummer,
                            Hash            = "",
                            IsAdmin         = model.isAdmin,
                            RequestId       = model.requestId,
                            ResponseMessage = "",
                            Shortname       = model.shortname,
                            Status          = "pending",
                            Url             = "",
                            Token           = ""
                        };
                        entities.MIDRequests.Add(req);
                        entities.SaveChanges();

                        var returnCode = 0;
                        mid.Execute(out returnCode);
                        // ...
                        // ...
                        // ...

                        var q = from x in entities.MIDRequests
                                where x.RequestId == model.requestId
                                select x;
                        if (q.Any())
                        {
                            var x             = q.First();
                            x.Status          = "ready";
                            x.Erfolgreich     = false;
                            x.ResponseMessage = "";
                            //x.Url = "http://" + mandantUrl;
                            x.Url       = mandantUrl.StartsWith("http") ? mandantUrl : "http://" + mandantUrl;
                            x.Shortname = model.shortname;

                            var enUs = new CultureInfo("en-us");
                            var data = string.Format(
                                "<?xml version='1.0' encoding='utf-8' ?>" +
                                "<data>" +
                                "<user>{0}</user>" +
                                "<database>{1}</database>" +
                                "<module>{2}</module>" +
                                "<timestamp>{3}</timestamp>" +
                                "</data>",
                                model.shortname, datenbankBez, model.module, DateTime.Now.ToString(enUs.DateTimeFormat));
                            x.Token       = Convert.ToBase64String(Encoding.UTF8.GetBytes(data));
                            x.Hash        = Sign(x.Token, _TokenSigningCertificate2);
                            x.Handynummer = model.handynummer;
                            x.DatenbankId = model.datenbankId;
                            switch (returnCode)
                            {
                            case RETURN_OK:
                                x.ResponseMessage = "Mobile ID korrekt eingegeben.";
                                x.Erfolgreich     = true;
                                break;

                            case RETURN_REJECT:
                                x.ResponseMessage = "MID Abfrage abgelehnt/storniert.";
                                break;

                            case RETURN_FAIL:
                                x.ResponseMessage = "Ausnahme während der Bearbeitung der Abfrage. Mögliche Ursache: Mobile-ID beim Provider nicht aktiviert.";
                                break;

                            case RETURN_INVALID:
                                x.ResponseMessage = "Ungültige Abfrage/Konfiguration.";
                                break;

                            case RETURN_BLOCKED:
                                x.ResponseMessage = "Benutzer oder Token blockiert.";
                                break;

                            case RETURN_NOTFOUND:
                                x.ResponseMessage = "Benutzer nicht gefunden.";
                                break;
                            }
                            entities.SaveChanges();
                        }
                    }
                }
                catch (Exception ex)
                {
                    var entities = new DialogConfigBLEntities();
                    using (entities)
                    {
                        var q = from x in entities.MIDRequests
                                where x.RequestId == model.requestId
                                select x;
                        if (q.Any())
                        {
                            var x             = q.First();
                            x.Erfolgreich     = false;
                            x.ResponseMessage = "Ausnahme: " + ex.Message;
                            x.Status          = "ready";
                            entities.SaveChanges();
                        }
                    }
                }
            });
        }