Line 1: using System;
Line 2: using System.Collections.Generic;
Line 3: using MDK.Models;
Line 4: using Umbraco.Core.Persistence;
Line 5: using System.Data.SqlClient;
Line 6: using System.Configuration;
Line 7: using System.Collections.Specialized;
Line 8: using securitycheck;
Line 9: using System.Web;
Line 10: using Umbraco.Core;
Line 11: using System.Web.Security;
Line 12: using System.Net;
Line 13: using System.IO;
Line 14:
Line 15: namespace MDK.Repository
Line 16: {
Line 17: /// <summary>
Line 18: /// Summary description for Riger
Line 19: /// </summary>
Line 20: ///
Line 21: public class Medlemmer
Line 22: {
Line 23: static string connStr = ConfigurationManager.ConnectionStrings["MDK"].ConnectionString;
Line 24:
Line 25: public static Medlem GetMedlemByNr(string MedlemNr)
Line 26: {
Line 27: int intMedlemNr = 0;
Line 28: Int32.TryParse(MedlemNr, out intMedlemNr);
Line 29: var db = new Database("MDK");
Line 30: List<Medlem> Records = db.Fetch<Medlem>("SELECT * FROM Medlem WHERE MedlemNr = @0", intMedlemNr);
Line 31: if (Records.Count > 0)
Line 32: {
Line 33: Records[0].Navn = Records[0].Fornavn + " " + Records[0].Efternavn;
Line 34: if (Records[0].Email == "") //if email is missing, set a dummy email
Line 35: Records[0].Email = "tmp_" + intMedlemNr.ToString() + "_" + DateTime.Today.ToString("yyyyMMdd") + "@modelflyvning.dk";
Line 36: Records[0].MedlemKategoriStr = GetMedlemKategoriStr(Records[0].MedlemkategoriID);
Line 37: return Records[0];
Line 38: }
Line 39: else
Line 40: {
Line 41: Medlem m = new Medlem();
Line 42: m.MedlemID = 0;
Line 43: m.MedlemNr = 0;
Line 44: m.Email = "";
Line 45: return m;
Line 46: }
Line 47: }
Line 48:
Line 49: public static Medlem GetMedlemByID(int MedlemID)
Line 50: {
Line 51: var db = new Database("MDK");
Line 52: List<Medlem> Records = db.Fetch<Medlem>("SELECT * FROM Medlem WHERE MedlemID = @0", MedlemID);
Line 53: if (Records.Count > 0)
Line 54: {
Line 55: Records[0].Navn = Records[0].Fornavn + " " + Records[0].Efternavn;
Line 56: Records[0].MedlemKategoriStr = GetMedlemKategoriStr(Records[0].MedlemkategoriID);
Line 57: return Records[0];
Line 58: }
Line 59: else
Line 60: {
Line 61: Medlem m = new Medlem();
Line 62: m.MedlemID = 0;
Line 63: m.MedlemNr = 0;
Line 64: m.Email = "";
Line 65: return m;
Line 66: }
Line 67: }
Line 68:
Line 69: public static Medlem GetMedlemByEmail(string Email)
Line 70: {
Line 71: var db = new Database("MDK");
Line 72: List<Medlem> Records = db.Fetch<Medlem>("SELECT * FROM Medlem WHERE Email = @0", Email);
Line 73: if (Records.Count > 0)
Line 74: {
Line 75: Records[0].Navn = Records[0].Fornavn + " " + Records[0].Efternavn;
Line 76: Records[0].MedlemKategoriStr = GetMedlemKategoriStr(Records[0].MedlemkategoriID);
Line 77: return Records[0];
Line 78: }
Line 79: else
Line 80: {
Line 81: Medlem m = new Medlem();
Line 82: m.MedlemID = 0;
Line 83: m.MedlemNr = 0;
Line 84: m.Email = "";
Line 85: return m;
Line 86: }
Line 87: }
Line 88:
Line 89: public static bool IsEmailInUse(string Email)
Line 90: {
Line 91: Medlem testM = GetMedlemByEmail(Email);
Line 92: if (testM.Email == "")
Line 93: return false;
Line 94: else
Line 95: return true;
Line 96: }
Line 97:
Line 98: public static bool IsOldPasswordValid(string Brugernavn, string Adgangskode)
Line 99: {
Line 100: Utils.SaveToLog("IsOldPasswordValid, brugernavn adgangskode: [" + Brugernavn + "], [" + Adgangskode + "]");
Line 101: bool PasswordValid = false;
Line 102: using (SqlConnection conn = new SqlConnection(connStr))
Line 103: {
Line 104: conn.Open();
Line 105: string strSql = "SELECT MedlemNr FROM dbo.Medlem WHERE(MedlemNr = " + Brugernavn + ") AND (HASHBYTES('SHA2_512', N'" + Adgangskode + "') = [Password])";
Line 106:
Line 107: using (SqlCommand cmd = new SqlCommand(strSql, conn))
Line 108: {
Line 109: SqlDataReader dataReader = cmd.ExecuteReader();
Line 110: if (dataReader.HasRows)
Line 111: {
Line 112: PasswordValid = true;
Line 113: }
Line 114: dataReader.Close();
Line 115: }
Line 116:
Line 117: }
Line 118: return PasswordValid;
Line 119: }
Line 120:
Line 121: public static Medlem GetPendingMedlem(NameValueCollection MedlemValues)
Line 122: {
Line 123: //Map NameValueCollection to PendingMedlem Object
Line 124: Medlem m = new Medlem();
Line 125:
Line 126: string ValgtMedlemsType = MedlemValues["medlemskabtype"].ToLower();
Line 127: switch (ValgtMedlemsType)
Line 128: {
Line 129: case "voksen":
Line 130: m.KontingentID = 1;
Line 131: m.MedlemkategoriID = "s";
Line 132: break;
Line 133: case "junior":
Line 134: m.KontingentID = 3;
Line 135: m.MedlemkategoriID = "j";
Line 136: break;
Line 137: case "familie":
Line 138: m.KontingentID = 9;
Line 139: m.MedlemkategoriID = "f";
Line 140: break;
Line 141: case "passivt":
Line 142: m.KontingentID = 8;
Line 143: m.MedlemkategoriID = "p";
Line 144: break;
Line 145: case "abonnent":
Line 146: m.KontingentID = 10;
Line 147: m.MedlemkategoriID = "a";
Line 148: break;
Line 149: }
Line 150: if (ValgtMedlemsType == "abonnent")
Line 151: {
Line 152: m.StatusID = 102;
Line 153: m.StatusTxt = "Gyldig abonnent";
Line 154: m.ModtMFN = true;
Line 155: }
Line 156: else
Line 157: {
Line 158: m.StatusID = 10;
Line 159: m.StatusTxt = "Ønsker medlemsskab";
Line 160: }
Line 161:
Line 162: m.Fornavn = MedlemValues["fornavn"];
Line 163: m.Efternavn = MedlemValues["efternavn"];
Line 164: m.Navn = m.Fornavn + " " + m.Efternavn;
Line 165: m.Adresse = MedlemValues["adresse"];
Line 166: m.Adresse2 = MedlemValues["sted"];
Line 167: m.Postnr = MedlemValues["postnr"];
Line 168: m.By = MedlemValues["by"];
Line 169: m.Land = MedlemValues["land"];
Line 170: m.Email = MedlemValues["email"];
Line 171: m.Telefon = MedlemValues["telefon"];
Line 172: m.Telefon2 = MedlemValues["telefon2"];
Line 173: m.FoedselsdatoStr = MedlemValues["fdato"];
Line 174: m.PrimaerKlubID = Convert.ToInt32(MedlemValues["klub"]);
Line 175: m.PrimaerKlubNavn = ((int)m.PrimaerKlubID > 0) ? Klubber.GetKlubNavnByID((int)m.PrimaerKlubID) : null;
Line 176: m.Bemaerk = MedlemValues["bemaerk"];
Line 177: m.BetalingsmetodeID = Convert.ToInt32(MedlemValues["betalingsmetode"]);
Line 178: m.Samtykke = (MedlemValues["samtykke"] == "on") ? true : false;
Line 179:
Line 180: m.ModtMFNStr = MedlemValues["mfn"];
Line 181: m.ModtMFN = (Convert.ToInt32(MedlemValues["mfn"]) == 1);
Line 182:
Line 183: m.Indmeldelsesdato = DateTime.Now;
Line 184: m.Oprettet = DateTime.Now;
Line 185: m.SidstAendret = DateTime.Now;
Line 186:
Line 187: if (HttpContext.Current.User.Identity.IsAuthenticated)
Line 188: {
Line 189: var member = ApplicationContext.Current.Services.MemberService.GetByUsername(Membership.GetUser().UserName);
Line 190: m.SidstAendretAf = member.Username;
Line 191: }
Line 192: else
Line 193: {
Line 194: m.SidstAendretAf = "Website";
Line 195: }
Line 196:
Line 197: m.MedlemID = 0;
Line 198:
Line 199: return m;
Line 200: }
Line 201:
Line 202: public static Medlem ValidatePendingMedlem(Medlem M)
Line 203: {
Line 204: List<string> valMsgs = new List<string>();
Line 205: string ErrTxt;
Line 206:
Line 207: //Check om påkrævede felter er udfyldt
Line 208: if (string.IsNullOrEmpty(M.Fornavn))
Line 209: valMsgs.Add("Fornavn mangler at blive udfyldt");
Line 210: if (string.IsNullOrEmpty(M.Efternavn))
Line 211: valMsgs.Add("Efternavn mangler at blive udfyldt");
Line 212: if (string.IsNullOrEmpty(M.Adresse))
Line 213: valMsgs.Add("Adresse mangler at blive udfyldt");
Line 214: if (string.IsNullOrEmpty(M.Postnr))
Line 215: valMsgs.Add("Postnr mangler at blive udfyldt");
Line 216: if (string.IsNullOrEmpty(M.By))
Line 217: valMsgs.Add("By mangler at blive udfyldt");
Line 218: if (string.IsNullOrEmpty(M.Email))
Line 219: valMsgs.Add("E-mail mangler at blive udfyldt");
Line 220: if (string.IsNullOrEmpty(M.FoedselsdatoStr))
Line 221: valMsgs.Add("Fødselsdato mangler at blive udfyldt");
Line 222:
Line 223: if (!M.Samtykke)
Line 224: valMsgs.Add("Det er nødvendigt at vi får dit samtykke til at håndtere dine <a href='/persondatapolitik' target='_blank'>personoplysninger</a>, før du kan blive medlem.");
Line 225:
Line 226: //Check at email adressen ikke allerede er i brug
Line 227: if (IsEmailInUse(M.Email))
Line 228: valMsgs.Add("E-mailen er allerede optaget - angiv en anden e-mail");
Line 229: //Check af korrekt format i email adresse
Line 230: if (!MailHelper.EmailValid(M.Email))
Line 231: valMsgs.Add("E-mail er ikke udfyldt korrekt");
Line 232: //validering af Fødselsdato
Line 233: DateTime dt = DateTime.ParseExact(M.FoedselsdatoStr, "dd-MM-yyyy", null);
Line 234: if ((dt == null) || (dt.ToShortDateString() == DateTime.Now.ToShortDateString()))
Line 235: valMsgs.Add("Fødselsdato er ikke udfyldt korrekt");
Line 236: else
Line 237: M.Foedselsdato = dt;
Line 238: if ((M.MedlemkategoriID == "j") && (M.Foedselsdato <= DateTime.Now.AddYears(-18)))
Line 239: {
Line 240: M.KontingentID = 1;
Line 241: M.MedlemkategoriID = "s";
Line 242: }
Line 243:
Line 244: //foretag valideringer mod SQL-injections
Line 245: if (!chk.chk4SQLInjPassed(M.Fornavn, out ErrTxt))
Line 246: valMsgs.Add("Fornavn må ikke indeholde "" + ErrTxt + "" - Data er ikke blevet gemt...");
Line 247: if (!chk.chk4SQLInjPassed(M.Efternavn, out ErrTxt))
Line 248: valMsgs.Add("Efternavn må ikke indeholde "" + ErrTxt + "" - Data er ikke blevet gemt...");
Line 249: if (!chk.chk4SQLInjPassed(M.Adresse, out ErrTxt))
Line 250: valMsgs.Add("Adresse må ikke indeholde "" + ErrTxt + "" - Data er ikke blevet gemt...");
Line 251: if (!chk.chk4SQLInjPassed(M.Adresse2, out ErrTxt))
Line 252: valMsgs.Add("Sted må ikke indeholde "" + ErrTxt + "" - Data er ikke blevet gemt...");
Line 253: if (!chk.chk4SQLInjPassed(M.Postnr, out ErrTxt))
Line 254: valMsgs.Add("Postnr må ikke indeholde "" + ErrTxt + "" - Data er ikke blevet gemt...");
Line 255: if (!chk.chk4SQLInjPassed(M.By, out ErrTxt))
Line 256: valMsgs.Add("By må ikke indeholde "" + ErrTxt + "" - Data er ikke blevet gemt...");
Line 257: if (!chk.chk4SQLInjPassed(M.Land, out ErrTxt))
Line 258: valMsgs.Add("Land må ikke indeholde "" + ErrTxt + "" - Data er ikke blevet gemt...");
Line 259: if ((!chk.chk4SQLInjPassed(M.Telefon, out ErrTxt)) || (!chk.chk4SQLInjPassed(M.Telefon2, out ErrTxt)))
Line 260: valMsgs.Add("Telefon må ikke indeholde "" + ErrTxt + "" - Data er ikke blevet gemt...");
Line 261: if (!chk.chk4SQLInjPassed(M.Bemaerk, out ErrTxt))
Line 262: valMsgs.Add("Bemærkninger må ikke indeholde "" + ErrTxt + "" - Data er ikke blevet gemt...");
Line 263:
Line 264: if (M.PrimaerKlubID == 0)
Line 265: {
Line 266: M.PrimaerKlubID = null;
Line 267: M.PrimaerKlubNavn = null;
Line 268: }
Line 269:
Line 270: if (M.ModtMFNStr == "0")
Line 271: valMsgs.Add("Modelflyvenyt leveringsform mangler at blive angivet - Data er ikke blevet gemt...");
Line 272:
Line 273: M.ValidationMsg = valMsgs;
Line 274: if (M.ValidationMsg.Count > 0)
Line 275: M.ValidationStatus = ValStatus.error;
Line 276: else
Line 277: M.ValidationStatus = ValStatus.ok;
Line 278:
Line 279: return M;
Line 280: }
Line 281:
Line 282: public static int CreateMedlem(Medlem NytMedlem)
Line 283: {
Line 284: int MedlemID = 0;
Line 285: using (var db = new Database("MDK"))
Line 286: {
Line 287: MedlemID = Convert.ToInt32(db.Insert(NytMedlem));
Line 288: //Insert statement udføres i KlubMedlem
Line 289: if (NytMedlem.PrimaerKlubID > 0)
Line 290: {
Line 291: Klubber.InsertKlubMedlem(MedlemID, (int)NytMedlem.PrimaerKlubID);
Line 292: }
Line 293: }
Line 294: return MedlemID;
Line 295: }
Line 296:
Line 297: public static string AktiverMedlem(int MedlemID, bool SetBetaltAar = false)
Line 298: {
Line 299: //Opret nyt medlemsnr
Line 300: int NytMedlemNr = Get1stAvailMedlemNr(MedlemID);
Line 301: //Opdater tbl Medlem med nyt medlemsnr
Line 302: MDK.Models.Medlem M = MDK.Repository.Medlemmer.GetMedlemByID(MedlemID);
Line 303: M.MedlemNr = NytMedlemNr;
Line 304: M.StatusID = 100;
Line 305: M.StatusTxt = "Aktiv medlem";
Line 306: M.KontoAktiv = true;
Line 307: M.KontoAktivDato = DateTime.Now;
Line 308: M.SidstAendret = DateTime.Now;
Line 309: M.SidstAendretAf = "Website";
Line 310: if (M.MedlemkategoriID != "f")
Line 311: M.ModtMFN = true;
Line 312:
Line 313: if (SetBetaltAar)
Line 314: {
Line 315: int betaltAar = DateTime.Now.Year;
Line 316: if ((DateTime.Now.Month > 9) || ((DateTime.Now.Month == 9) && (DateTime.Now.Day > 19)))
Line 317: betaltAar += 1;
Line 318: M.BetaltAar = betaltAar;
Line 319: }
Line 320:
Line 321: M.Token = Guid.NewGuid();
Line 322: M.MedlemGUID = Guid.NewGuid();
Line 323:
Line 324: using (var db = new Database("MDK"))
Line 325: {
Line 326: db.Update(M);
Line 327: }
Line 328:
Line 329: //Opret member i Umbraco
Line 330:
Line 331: string password = "";
Line 332: int MemberID = 0;
Line 333: //Findes der allerede en Umbraco Member konto?
Line 334: var Mem = ApplicationContext.Current.Services.MemberService.GetByUsername(M.MedlemNr.ToString());
Line 335: if (Mem != null)
Line 336: {
Line 337: MemberID = Convert.ToInt32(Mem.Username);
Line 338: password = Mem.RawPasswordValue;
Line 339: }
Line 340: //Generer et password (hvis det ikke allerede er genereret fordi der findes en Member)
Line 341: if (string.IsNullOrEmpty(password))
Line 342: password = Utils.RandomPassword.Generate(8, 8);
Line 343:
Line 344: Utils.SaveToLog("PW: " + password);
Line 345:
Line 346: //Save hashed pw in tbl Medlem
Line 347: saveHashedPW(password, MedlemID);
Line 348:
Line 349: //Update member in CMS in old site
Line 350: processMemberUpdateOldSite(MedlemID);
Line 351:
Line 352: //Opret Member hvis det ikke allerede findes i db
Line 353: if (MemberID == 0)
Line 354: {
Line 355: try
Line 356: {
Line 357: MemberID = Utils.CreateMember(M.MedlemNr.ToString(), M.Navn, M.Email, M, password, "Registered Users");
Line 358: }
Line 359: catch (Exception ex)
Line 360: {
Line 361: Utils.SaveToLog("Fejl ved createMember: " + ex.Message.ToString());
Line 362: }
Line 363: }
Line 364: MailHelper.SendKontoInfo(M);
Line 365: return "";
Line 366: }
Line 367:
Line 368: public static string DeaktiverMedlem(int MedlemID)
Line 369: {
Line 370:
Line 371: MDK.Models.Medlem M = MDK.Repository.Medlemmer.GetMedlemByID(MedlemID);
Line 372: M.StatusID = 99;
Line 373: M.StatusTxt = "Udmeldt";
Line 374: M.Udmeldelsesdato = DateTime.Now;
Line 375: M.KontoAktiv = false;
Line 376: M.KontoAktivDato = null;
Line 377: M.SidstAendret = DateTime.Now;
Line 378:
Line 379: var memberService = ApplicationContext.Current.Services.MemberService;
Line 380: var member = ApplicationContext.Current.Services.MemberService.GetByUsername(Membership.GetUser().UserName);
Line 381:
Line 382: M.SidstAendretAf = member.Username; // "Website";
Line 383: M.ModtMFN = false;
Line 384: M.Token = null;
Line 385:
Line 386: using (var db = new Database("MDK"))
Line 387: {
Line 388: db.Update(M);
Line 389: }
Line 390:
Line 391: //Opdater member i Umbraco?
Line 392:
Line 393: return "";
Line 394: }
Line 395:
Line 396: public static string GenaktiverMedlem(int MedlemID, int ToStatusID)
Line 397: {
Line 398: MDK.Models.Medlem M = MDK.Repository.Medlemmer.GetMedlemByID(MedlemID);
Line 399: M.StatusID = ToStatusID;
Line 400: if (ToStatusID == 100)
Line 401: M.StatusTxt = "Aktiv medlem";
Line 402: else
Line 403: M.StatusTxt = "Gyldig Abonnent";
Line 404: M.Udmeldelsesdato = null;
Line 405: M.KontoAktiv = true;
Line 406: M.KontoAktivDato = DateTime.Now;
Line 407: M.SidstAendret = DateTime.Now;
Line 408: M.SidstAendretAf = "Website";
Line 409: if (M.MedlemkategoriID == "f")
Line 410: M.ModtMFN = false;
Line 411: else
Line 412: M.ModtMFN = true;
Line 413: M.Token = Guid.NewGuid();
Line 414:
Line 415: using (var db = new Database("MDK"))
Line 416: {
Line 417: db.Update(M);
Line 418: }
Line 419:
Line 420: //Opdater member i Umbraco?
Line 421:
Line 422: return "";
Line 423: }
Line 424:
Line 425: private static void processMemberUpdateOldSite(int medlemID)
Line 426: {
Line 427: //try
Line 428: //{
Line 429: // using (WebClient client = new WebClient())
Line 430: // {
Line 431: // Uri myUri = new Uri("http://www.modelflyvning.dk/umbraco/updatememberfromtbl.aspx?b=" + medlemID);
Line 432: // string result = client.DownloadString(myUri);
Line 433: // }
Line 434: //}
Line 435: //catch (Exception ex)
Line 436: //{
Line 437: //}
Line 438: }
Line 439:
Line 440: private static void saveHashedPW(string pw, int medlemID)
Line 441: {
Line 442: string connStr = ConfigurationManager.ConnectionStrings["MDK"].ConnectionString;
Line 443: using (SqlConnection conn = new SqlConnection(connStr))
Line 444: {
Line 445: conn.Open();
Line 446: string strSql = "UPDATE Medlem SET [Password] = HASHBYTES('SHA2_512', CONVERT(NVarchar(1000), '" + pw + "')) FROM Medlem WHERE (MedlemID = " + medlemID + ")";
Line 447: using (SqlCommand cmd = new SqlCommand(strSql, conn))
Line 448: {
Line 449: cmd.ExecuteScalar();
Line 450: }
Line 451: }
Line 452: }
Line 453:
Line 454: private static int Get1stAvailMedlemNr(int MedlemID)
Line 455: {
Line 456: int NytMedlemNr = 0;
Line 457: //Find det første ledige nr
Line 458: using (SqlConnection conn = new SqlConnection(connStr))
Line 459: {
Line 460: conn.Open();
Line 461: string strSql = "SELECT TOP(1) MedlemNr.Nr FROM MedlemNr";
Line 462: strSql += " LEFT OUTER JOIN Medlem ON MedlemNr.Nr = Medlem.MedlemNr";
Line 463: strSql += " WHERE(Medlem.MedlemNr IS NULL) ORDER BY MedlemNr.Nr";
Line 464: using (SqlCommand cmd = new SqlCommand(strSql, conn))
Line 465: {
Line 466: SqlDataReader dataReader = cmd.ExecuteReader();
Line 467: while (dataReader.Read())
Line 468: {
Line 469: NytMedlemNr = Convert.ToInt32(dataReader["Nr"].ToString());
Line 470: }
Line 471: dataReader.Close();
Line 472: }
Line 473: }
Line 474: return NytMedlemNr;
Line 475: }
Line 476:
Line 477: private static string GetMedlemKategoriStr(string id)
Line 478: {
Line 479: //MedlemKategoriID MedlemKategoriTxt
Line 480: //a Abonnent
Line 481: //f Familie
Line 482: //j Ungdom
Line 483: //p Passiv
Line 484: //s Voksen
Line 485: string retVal = "";
Line 486: if (id == "a")
Line 487: {
Line 488: retVal = "Abonnent";
Line 489: }
Line 490: else if (id == "f")
Line 491: {
Line 492: retVal = "Familie";
Line 493: }
Line 494: else if (id == "j")
Line 495: {
Line 496: retVal = "Ungdom";
Line 497: }
Line 498: else if (id == "p")
Line 499: {
Line 500: retVal = "Passiv";
Line 501: }
Line 502: else if (id == "s")
Line 503: {
Line 504: retVal = "Voksen";
Line 505: }
Line 506: return retVal;
Line 507: }
Line 508:
Line 509: public static MedlemCertifikat GetMedlemCertifikater(string medlemNr)
Line 510: {
Line 511: //CertifikatTypeID CertifikatTypeTxt
Line 512: //1 A
Line 513: //2 H
Line 514: //3 S
Line 515: //4 Stormodel
Line 516: //5 Stormodel-H
Line 517: //6 Stormodel-S
Line 518: //7 Jet
Line 519: //8 M
Line 520: //9 Stormodel-M
Line 521: //10 Stormodel Giga
Line 522: //11 Stormodel-H Giga
Line 523: //12 Stormodel-S Giga
Line 524: //13 Jet Giga
Line 525: //14 Stormodel-M Giga
Line 526:
Line 527: using (SqlConnection conn = new SqlConnection(connStr))
Line 528: {
Line 529: MedlemCertifikat mc = new MedlemCertifikat();
Line 530: mc.MedlemNr = medlemNr;
Line 531: conn.Open();
Line 532: string strSql = "SELECT Medlem.MedlemID, Medlem.MedlemNr, Cert.CertifikatTypeID, Cert.StatusID";
Line 533: strSql += " FROM Cert INNER JOIN";
Line 534: strSql += " Medlem ON Cert.MedlemID = Medlem.MedlemID";
Line 535: strSql += " WHERE (Cert.StatusID > 99) AND (Medlem.MedlemNr = " + medlemNr + ")";
Line 536: using (SqlCommand cmd = new SqlCommand(strSql, conn))
Line 537: {
Line 538: SqlDataReader dr = cmd.ExecuteReader();
Line 539: while (dr.Read())
Line 540: {
Line 541: if (Convert.ToInt32(dr["CertifikatTypeID"]) == 1)
Line 542: {
Line 543: mc.A = true;
Line 544: }
Line 545: if (Convert.ToInt32(dr["CertifikatTypeID"]) == 2)
Line 546: {
Line 547: mc.H = true;
Line 548: }
Line 549: if (Convert.ToInt32(dr["CertifikatTypeID"]) == 3)
Line 550: {
Line 551: mc.S = true;
Line 552: }
Line 553: if (Convert.ToInt32(dr["CertifikatTypeID"]) == 4)
Line 554: {
Line 555: mc.Stormodel = true;
Line 556: }
Line 557: if (Convert.ToInt32(dr["CertifikatTypeID"]) == 5)
Line 558: {
Line 559: mc.StormodelH = true;
Line 560: }
Line 561: if (Convert.ToInt32(dr["CertifikatTypeID"]) == 6)
Line 562: {
Line 563: mc.StormodelS = true;
Line 564: }
Line 565: if (Convert.ToInt32(dr["CertifikatTypeID"]) == 7)
Line 566: {
Line 567: mc.Jet = true;
Line 568: }
Line 569: if (Convert.ToInt32(dr["CertifikatTypeID"]) == 8)
Line 570: {
Line 571: mc.M = true;
Line 572: }
Line 573: if (Convert.ToInt32(dr["CertifikatTypeID"]) == 9)
Line 574: {
Line 575: mc.StormodelM = true;
Line 576: }
Line 577:
Line 578: }
Line 579: dr.Close();
Line 580: }
Line 581: return mc;
Line 582: }
Line 583:
Line 584: }
Line 585:
Line 586: public static MedlemKontrollant GetMedlemKontrollant(string medlemNr)
Line 587: {
Line 588: //KontrollantTypeID KontrollantTypeTxt
Line 589: //1 A
Line 590: //2 H
Line 591: //3 S
Line 592: //4 Stormodel
Line 593: //5 Stormodel-H
Line 594: //6 Stormodel-S
Line 595: //7 Jet
Line 596: //8 M
Line 597: //9 Stormodel-M
Line 598: //10 Stormodel Giga
Line 599: //11 Stormodel-H Giga
Line 600: //12 Stormodel-S Giga
Line 601: //13 Jet Giga
Line 602: //14 Stormodel-M Giga
Line 603:
Line 604: using (SqlConnection conn = new SqlConnection(connStr))
Line 605: {
Line 606: MedlemKontrollant mk = new MedlemKontrollant();
Line 607: mk.MedlemNr = medlemNr;
Line 608: conn.Open();
Line 609: string strSql = "SELECT Medlem.MedlemID, Medlem.MedlemNr, Kont.KontrollantTypeID, Kont.StatusID";
Line 610: strSql += " FROM Kont INNER JOIN";
Line 611: strSql += " Medlem ON Kont.MedlemID = Medlem.MedlemID";
Line 612: strSql += " WHERE (Kont.StatusID > 99) AND (Medlem.MedlemNr = " + medlemNr + ")";
Line 613: using (SqlCommand cmd = new SqlCommand(strSql, conn))
Line 614: {
Line 615: SqlDataReader dr = cmd.ExecuteReader();
Line 616: while (dr.Read())
Line 617: {
Line 618: if (Convert.ToInt32(dr["KontrollantTypeID"]) == 1)
Line 619: {
Line 620: mk.A = true;
Line 621: }
Line 622: if (Convert.ToInt32(dr["KontrollantTypeID"]) == 2)
Line 623: {
Line 624: mk.H = true;
Line 625: }
Line 626: if (Convert.ToInt32(dr["KontrollantTypeID"]) == 3)
Line 627: {
Line 628: mk.S = true;
Line 629: }
Line 630: if (Convert.ToInt32(dr["KontrollantTypeID"]) == 4)
Line 631: {
Line 632: mk.Stormodel = true;
Line 633: }
Line 634: if (Convert.ToInt32(dr["KontrollantTypeID"]) == 5)
Line 635: {
Line 636: mk.StormodelH = true;
Line 637: }
Line 638: if (Convert.ToInt32(dr["KontrollantTypeID"]) == 6)
Line 639: {
Line 640: mk.StormodelS = true;
Line 641: }
Line 642: if (Convert.ToInt32(dr["KontrollantTypeID"]) == 7)
Line 643: {
Line 644: mk.Jet = true;
Line 645: }
Line 646: if (Convert.ToInt32(dr["KontrollantTypeID"]) == 8)
Line 647: {
Line 648: mk.M = true;
Line 649: }
Line 650: if (Convert.ToInt32(dr["KontrollantTypeID"]) == 9)
Line 651: {
Line 652: mk.StormodelM = true;
Line 653: }
Line 654: }
Line 655: dr.Close();
Line 656: }
Line 657: return mk;
Line 658: }
Line 659:
Line 660: }
Line 661:
Line 662: public static Erhvervsforsikring GetErhversforsikring(string medlemNr)
Line 663: {
Line 664:
Line 665: using (SqlConnection conn = new SqlConnection(connStr))
Line 666: {
Line 667: Erhvervsforsikring ef = new Erhvervsforsikring();
Line 668: ef.MedlemNr = medlemNr;
Line 669: ef.ForsID = 0;
Line 670: ef.BetaltAar = 0;
Line 671: conn.Open();
Line 672: string strSql = "SELECT TOP(1) Medlem.MedlemID, Medlem.MedlemNr, ErhvervsForsikring.*";
Line 673: strSql += " FROM ErhvervsForsikring INNER JOIN";
Line 674: strSql += " Medlem ON ErhvervsForsikring.MedlemID = Medlem.MedlemID";
Line 675: strSql += " WHERE (Medlem.MedlemNr = " + medlemNr + ")";
Line 676: strSql += " ORDER BY BetaltAar DESC";
Line 677: using (SqlCommand cmd = new SqlCommand(strSql, conn))
Line 678: {
Line 679: SqlDataReader dr = cmd.ExecuteReader();
Line 680: while (dr.Read())
Line 681: {
Line 682: ef.ForsID = Convert.ToInt32(dr["ForsID"]);
Line 683:
Line 684: if (!string.IsNullOrEmpty(dr["BetaltDato"].ToString()))
Line 685: {
Line 686: ef.BetaltDato = Convert.ToDateTime(dr["BetaltDato"]);
Line 687: }
Line 688: try { ef.BetaltAar = Convert.ToInt32(dr["BetaltAar"]); }
Line 689: catch { }
Line 690: ef.ErhvervStartmasse = (Erhvervsforsikring.Startmasse)dr["StartmasseID"];
Line 691: ef.ErhvervGeoUdvidelse = (Erhvervsforsikring.GeoUdvidelse)dr["UdvidGeoID"];
Line 692:
Line 693: string inDate = dr["AcceptDato"].ToString();
Line 694: DateTime outDate;
Line 695: if (DateTime.TryParse(inDate, out outDate))
Line 696: {
Line 697: ef.AcceptDato = outDate;
Line 698: }
Line 699:
Line 700: ef.ForsTmpID = dr["TmpID"].ToString();
Line 701: ef.Bemaerk = dr["Bemaerk"].ToString();
Line 702:
Line 703: string inOrdreID = dr["OrdreID"].ToString();
Line 704: int outOrdreID;
Line 705: if (int.TryParse(inOrdreID, out outOrdreID))
Line 706: {
Line 707: ef.OrdreID = outOrdreID;
Line 708: }
Line 709:
Line 710: string inRabat = dr["Rabat"].ToString();
Line 711: int outRabat;
Line 712: if (int.TryParse(inRabat, out outRabat))
Line 713: {
Line 714: ef.Rabat = outRabat;
Line 715: }
Line 716: }
Line 717: dr.Close();
Line 718: }
Line 719: return ef;
Line 720: }
Line 721:
Line 722: }
Line 723:
Line 724: public static Transportforsikring GetTransportforsikring(string medlemNr)
Line 725: {
Line 726:
Line 727: using (SqlConnection conn = new SqlConnection(connStr))
Line 728: {
Line 729: Transportforsikring tf = new Transportforsikring();
Line 730: tf.MedlemNr = medlemNr;
Line 731: tf.ForsID = 0;
Line 732: tf.BetaltAar = 0;
Line 733: conn.Open();
Line 734: string strSql = "SELECT TOP(1) Medlem.MedlemID, Medlem.MedlemNr, TransportForsikring.*";
Line 735: strSql += " FROM TransportForsikring INNER JOIN";
Line 736: strSql += " Medlem ON TransportForsikring.MedlemID = Medlem.MedlemID";
Line 737: strSql += " WHERE (Medlem.MedlemNr = " + medlemNr + ")";
Line 738: strSql += " ORDER BY BetaltAar DESC";
Line 739: using (SqlCommand cmd = new SqlCommand(strSql, conn))
Line 740: {
Line 741: SqlDataReader dr = cmd.ExecuteReader();
Line 742: while (dr.Read())
Line 743: {
Line 744: tf.ForsID = Convert.ToInt32(dr["ForsID"]);
Line 745:
Line 746: if (!string.IsNullOrEmpty(dr["BetaltDato"].ToString()))
Line 747: {
Line 748: tf.BetaltDato = Convert.ToDateTime(dr["BetaltDato"]);
Line 749: }
Line 750: tf.BetaltAar = Convert.ToInt32(dr["BetaltAar"]);
Line 751: tf.TransOpbevarSum = (Transportforsikring.TransportOpbevarSum)dr["TransOpbevarID"];
Line 752: tf.TransOpbevarUdvidVerden = Convert.ToBoolean(dr["UdvidVerden"]);
Line 753:
Line 754: string inDate = dr["AcceptDato"].ToString();
Line 755: DateTime outDate;
Line 756: if (DateTime.TryParse(inDate, out outDate))
Line 757: {
Line 758: tf.AcceptDato = outDate;
Line 759: }
Line 760:
Line 761: tf.ForsTmpID = dr["TmpID"].ToString();
Line 762: tf.Bemaerk = dr["Bemaerk"].ToString();
Line 763:
Line 764: string inOrdreID = dr["OrdreID"].ToString();
Line 765: int outOrdreID;
Line 766: if (int.TryParse(inOrdreID, out outOrdreID))
Line 767: {
Line 768: tf.OrdreID = outOrdreID;
Line 769: }
Line 770:
Line 771: string inRabat = dr["Rabat"].ToString();
Line 772: int outRabat;
Line 773: if (int.TryParse(inRabat, out outRabat))
Line 774: {
Line 775: tf.Rabat = outRabat;
Line 776: }
Line 777: }
Line 778: dr.Close();
Line 779: }
Line 780: return tf;
Line 781: }
Line 782:
Line 783: }
Line 784:
Line 785: public static void SaveBrugerInfo(string medlemNr, string parameter, string value, string show, string inputType)
Line 786: {
Line 787:
Line 788: string connStr = ConfigurationManager.ConnectionStrings["MDK"].ConnectionString;
Line 789: Guid guid = Guid.NewGuid();
Line 790:
Line 791: string strUpd = "UPDATE dbo.Medlem";
Line 792: string strSet = " SET [" + parameter + "] = @Value";
Line 793: string strJoin = "";
Line 794: string strWhere = " WHERE(dbo.Medlem.MedlemNr = @MedlemNr)";
Line 795: //så er det Medlem tabel der er default set during initialization
Line 796:
Line 797: if (parameter.StartsWith("EF."))
Line 798: {
Line 799: strUpd = "UPDATE dbo.Erhvervsforsikring";
Line 800: strSet = " SET [" + parameter.Replace("EF.", "") + "] = @Value";
Line 801: strJoin = " FROM dbo.Erhvervsforsikring INNER JOIN dbo.Medlem ON dbo.Erhvervsforsikring.MedlemID = dbo.Medlem.MedlemID";
Line 802: }
Line 803: else if (parameter.StartsWith("TF."))
Line 804: {
Line 805: strUpd = "UPDATE dbo.Transportforsikring";
Line 806: strSet = " SET [" + parameter.Replace("TF.", "") + "] = @Value";
Line 807: strJoin = " FROM dbo.Transportforsikring INNER JOIN dbo.Medlem ON dbo.Transportforsikring.MedlemID = dbo.Medlem.MedlemID";
Line 808: }
Line 809:
Line 810: if (parameter.ToLower().EndsWith("dato"))
Line 811: if (string.IsNullOrEmpty(value))
Line 812: strSet = strSet.Replace("@Value", "NULL");
Line 813: else
Line 814: strSet = strSet.Replace("@Value", "CONVERT(DATETIME, '" + value + " 00:00:00', 105)");
Line 815:
Line 816: if (parameter == "EF.StartmasseID")
Line 817: {
Line 818: try
Line 819: {
Line 820: Erhvervsforsikring.Startmasse myStartmasse = (Erhvervsforsikring.Startmasse)Enum.Parse(typeof(Erhvervsforsikring.Startmasse), value);
Line 821: value = ((int)myStartmasse).ToString();
Line 822: }
Line 823: catch { }
Line 824: }
Line 825: if (parameter == "EF.UdvidGeoID")
Line 826: {
Line 827: try
Line 828: {
Line 829: Erhvervsforsikring.GeoUdvidelse myGeoUdvidelse = (Erhvervsforsikring.GeoUdvidelse)Enum.Parse(typeof(Erhvervsforsikring.GeoUdvidelse), value);
Line 830: value = ((int)myGeoUdvidelse).ToString();
Line 831: }
Line 832: catch { }
Line 833: }
Line 834: if (parameter == "TF.TransOpbevarID")
Line 835: {
Line 836: try
Line 837: {
Line 838: Transportforsikring.TransportOpbevarSum myOpbevarSum = (Transportforsikring.TransportOpbevarSum)Enum.Parse(typeof(Transportforsikring.TransportOpbevarSum), value);
Line 839: value = ((int)myOpbevarSum).ToString();
Line 840: }
Line 841: catch { }
Line 842: }
Line 843: if (parameter == "TF.UdvidVerden")
Line 844: {
Line 845: if (value == "true")
Line 846: value = "1";
Line 847: if (value == "false")
Line 848: value = "0";
Line 849: }
Line 850: if (parameter == "ModtMFN")
Line 851: {
Line 852: if (value == "1")
Line 853: value = "1";
Line 854: if (value == "2")
Line 855: value = "0";
Line 856: }
Line 857:
Line 858:
Line 859: string strSql = strUpd + strSet + strJoin + strWhere;
Line 860:
Line 861: if (parameter == "Email")
Line 862: {
Line 863: //special regel hvis det er email feltet
Line 864: strSql = "UPDATE Medlem SET [" + parameter + "] = @Value, CmsOldSync = 1, Token = N'" + guid.ToString().ToLower() + "' WHERE(MedlemNr = @MedlemNr)";
Line 865: }
Line 866:
Line 867: using (SqlConnection conn = new SqlConnection(connStr))
Line 868: {
Line 869:
Line 870: if (!string.IsNullOrEmpty(strSql))
Line 871: {
Line 872: conn.Open();
Line 873:
Line 874: using (SqlCommand cmd = new SqlCommand(strSql, conn))
Line 875: {
Line 876: if (strSql.Contains("@Value"))
Line 877: cmd.Parameters.AddWithValue("@Value", (!string.IsNullOrEmpty(value)) ? value.StripHtml() : "");
Line 878:
Line 879: cmd.Parameters.AddWithValue("@MedlemNr", medlemNr);
Line 880:
Line 881: try
Line 882: {
Line 883: cmd.ExecuteScalar();
Line 884:
Line 885: if (parameter == "Email")
Line 886: {
Line 887: Umbraco.Core.Models.IMember Mem = ApplicationContext.Current.Services.MemberService.GetByUsername(medlemNr);
Line 888: Mem.Email = value;
Line 889: ApplicationContext.Current.Services.MemberService.Save(Mem);
Line 890:
Line 891: cmsSync(medlemNr, guid);
Line 892: }
Line 893: }
Line 894: catch (Exception ex)
Line 895: { }
Line 896: }
Line 897: }
Line 898: }
Line 899:
Line 900: }
Line 901:
Line 902: public static void SaveStatus(int medlemID, int fromStatusID, int toStatusID)
Line 903: {
Line 904: if ((fromStatusID == 10) && (toStatusID == 100))
Line 905: {
Line 906: //aktiver medlem
Line 907: string result = AktiverMedlem(medlemID, true);
Line 908: }
Line 909: if ((fromStatusID == 99) && ((toStatusID == 100) || (toStatusID == 102)))
Line 910: {
Line 911: //genaktiver medlem/abonnent
Line 912: string result = GenaktiverMedlem(medlemID, toStatusID);
Line 913: }
Line 914: if (((fromStatusID == 100) || (fromStatusID == 102)) && (toStatusID == 99))
Line 915: {
Line 916: //deaktiver medlem/abonnent
Line 917: string result = DeaktiverMedlem(medlemID);
Line 918: }
Line 919: }
Line 920:
Line 921: public static void SaveProfilFoto(string medlemNr, string imgStr)
Line 922: {
Line 923:
Line 924: string connStr = ConfigurationManager.ConnectionStrings["MDK"].ConnectionString;
Line 925:
Line 926: string path = HttpContext.Current.Server.MapPath("~/images/medlem"); //Path
Line 927: string imageName = "profilfoto_" + Guid.NewGuid().ToString() + ".jpg";
Line 928: string imgPath = System.IO.Path.Combine(path, imageName);
Line 929: byte[] imageBytes = Convert.FromBase64String(imgStr.Replace("data:image/png;base64,", ""));
Line 930: System.IO.File.WriteAllBytes(imgPath, imageBytes);
Line 931:
Line 932: using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MDK"].ConnectionString))
Line 933: {
Line 934: conn.Open();
Line 935:
Line 936: string strSql = "UPDATE Medlem SET Foto = @imageName, ProfilfotoSource = 'new' WHERE MedlemNr = @medlemNr";
Line 937:
Line 938: using (SqlCommand cmd = new SqlCommand(strSql, conn))
Line 939: {
Line 940: cmd.Parameters.AddWithValue("imageName", imageName);
Line 941: cmd.Parameters.AddWithValue("medlemNr", medlemNr);
Line 942: cmd.ExecuteScalar();
Line 943: }
Line 944: }
Line 945:
Line 946: }
Line 947:
Line 948: public static void SyncMedlemskort(string medlemNr, int aar)
Line 949: {
Line 950: //try
Line 951: //{
Line 952: // string tmpID = "asdgerdfvdfgdghsdf";
Line 953: // string url = string.Format("http://www.modelflyvning.dk/umbraco/MakeCard.aspx?nr=" + medlemNr + "&aar=" + aar + "&tmpID=" + tmpID);
Line 954: // HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
Line 955: // HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Line 956: // StreamReader reader = new StreamReader(response.GetResponseStream());
Line 957: // string value = reader.ReadToEnd();
Line 958: // reader.Close();
Line 959: //}
Line 960: //catch
Line 961: //{
Line 962: //}
Line 963: }
Line 964:
Line 965: private static void cmsSync(string medlemNr, Guid guid)
Line 966: {
Line 967: //try
Line 968: //{
Line 969: // //string tmpID = "asdgerdfvdfgdghsdf";
Line 970: // string url = string.Format("http://www.modelflyvning.dk/umbraco/cmssync.aspx?nr=" + medlemNr + "&tmpID=" + guid.ToString().ToLower());
Line 971: // HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
Line 972: // HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Line 973: // StreamReader reader = new StreamReader(response.GetResponseStream());
Line 974: // string value = reader.ReadToEnd();
Line 975: // reader.Close();
Line 976: //}
Line 977: //catch
Line 978: //{
Line 979: //}
Line 980: }
Line 981:
Line 982: }
Line 983: }
|