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)); } }
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)); } }
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(); } }); }
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(); } } }
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)); } }
// 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))); } }
// GET: Send public ActionResult Send(string formData) { var success = true; var errorMessage = string.Empty; var antragNummer = 0; //formData = formData.Replace(""e;", "\\'"); //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)); }
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(); } } } }); }