public ActionResult Invitation(InvitationFileModel model) { InvitationCheckModel invitationList = new InvitationCheckModel(); try { foreach (var attachment in model.Attachments) { if (attachment != null) { var bytes = new byte[attachment.ContentLength]; attachment.InputStream.Read(bytes, 0, attachment.ContentLength); var stream = new System.IO.MemoryStream(bytes); var reader = new System.IO.StreamReader(stream, Encoding.Default); var text = reader.ReadToEnd(); string[] lines = text.Split('\n'); var i = 0; foreach (var line in lines) { if (i > 0) { string newline = line.Trim(); if (!string.IsNullOrEmpty(newline)) { string[] words = newline.Split(';'); var invitation = new StudentInvitationModel { LastName = words[0], FirstName = words[1], Email = words[2], Curriculum = words[3], Semester = words[4], Invite = true, }; var user = UserManager.FindByEmail(invitation.Email); if (user != null) { invitation.User = user; invitation.Remark = "Hat bereits ein Benutzerkonto"; } var curr = Db.Curricula.SingleOrDefault(c => c.ShortName.Equals(invitation.Curriculum.Trim())); if (curr == null) { invitation.Invite = false; invitation.Remark += "Studiengang unbekannt"; } var sem = Db.Semesters.SingleOrDefault(s => s.Name.Equals(invitation.Semester)); if (sem == null) { invitation.Invite = false; invitation.Remark += "Semester unbekannt"; } invitationList.Invitations.Add(invitation); } } i++; } } } Session["InvitationList"] = invitationList; } catch (Exception ex) { invitationList.Error = ex.Message; } return(View("InvitationList", invitationList)); }
public ActionResult Import(InvitationFileModel model) { var invitationList = CreateCheckModel(model); var host = GetCurrentUser(); var studentService = new StudentService(Db); /* * if (!string.IsNullOrEmpty(invitationList.Error)) * return View("InvitationList", invitationList); */ foreach (var invitation in invitationList.Invitations) { var user = UserManager.FindByEmail(invitation.Email); if (user == null) { var now = DateTime.Now; user = new ApplicationUser { UserName = invitation.Email, Email = invitation.Email, FirstName = invitation.FirstName, LastName = invitation.LastName, Registered = now, MemberState = MemberState.Student, Remark = "CIE", ExpiryDate = null, // Einladung bleibt dauerhaft bestehen - Deprovisionierung automatisch Submitted = now, EmailConfirmed = true, // damit ist auch ein "ForgotPassword" möglich, auch wenn er die Einladung nicht angenommen hat. IsApproved = true, // Damit bekommt der Nutzer von Anfang an E-Mails Faculty = host.Id // Benutzer der eingeladen hat }; // Benutzer anlegen, mit Dummy Passwort var result = UserManager.Create(user, "Cie98#lcl?"); } var student = studentService.GetCurrentStudent(user); if (student == null) { student = new Student(); student.Created = DateTime.Now; student.Curriculum = invitation.Curriculum; student.FirstSemester = invitation.Semester; student.UserId = user.Id; Db.Students.Add(student); } if (invitation.Course != null) { var subscription = invitation.Course.Occurrence.Subscriptions.FirstOrDefault(x => x.UserId.Equals(user.Id)); if (subscription == null) { subscription = new OccurrenceSubscription(); subscription.TimeStamp = DateTime.Now; subscription.UserId = user.Id; subscription.OnWaitingList = invitation.OnWaitinglist; subscription.Occurrence = invitation.Course.Occurrence; subscription.HostRemark = invitation.Remark; invitation.Course.Occurrence.Subscriptions.Add(subscription); } } } Db.SaveChanges(); return(View("InvitationList", invitationList)); }
private CieInvitationCheckModel CreateCheckModel(InvitationFileModel model) { var invitationList = new CieInvitationCheckModel(); var attachment = model.Attachments.FirstOrDefault(); if (attachment == null) { invitationList.Error = "Keine Datei"; return(invitationList); } try { var bytes = new byte[attachment.ContentLength]; attachment.InputStream.Read(bytes, 0, attachment.ContentLength); var stream = new System.IO.MemoryStream(bytes); var reader = new System.IO.StreamReader(stream, Encoding.Default); var text = reader.ReadToEnd(); string[] lines = text.Split('\n'); var i = 0; foreach (var line in lines) { if (i <= 0) { continue; } var newline = line.Trim(); if (!string.IsNullOrEmpty(newline)) { var words = newline.Split(';'); if (!string.IsNullOrEmpty(words[0])) { var invitation = new CieInvitationModel { LastName = words[0].Trim(), FirstName = words[1].Trim(), Email = words[2].Trim(), Invite = true, Curriculum = GetCieCurriculum(words[3].Trim()), Semester = SemesterService.GetSemester(words[5].Trim()) }; invitation.Course = GetCieCourse(invitation.Semester, words[4].Trim()); if (invitation.Curriculum != null && invitation.Course != null) { // Es werden die Daten aus primuss so übernommen // keine Überprüfung des Ampesystems var state = words[6].Trim(); if (state.Equals("TN")) { invitation.OnWaitinglist = false; } else { invitation.OnWaitinglist = true; } } else { invitation.Remark = "Studiengang oder LV nicht gefunden"; invitationList.Error = "Fehlehafte Daten"; } invitationList.Invitations.Add(invitation); } } i++; } } catch (Exception ex) { invitationList.Error = ex.Message; } return(invitationList); }
public ActionResult Invitation(InvitationFileModel model) { var invitationList = CreateCheckModel(model); return(View("InvitationList", invitationList)); }
public ActionResult Import(InvitationFileModel model) { var invitationList = CreateCheckModel(model); var host = GetCurrentUser(); var studentService = new StudentService(Db); /* * if (!string.IsNullOrEmpty(invitationList.Error)) * return View("InvitationList", invitationList); */ foreach (var invitation in invitationList.Invitations) { var user = UserManager.FindByEmail(invitation.Email); if (user == null) { var now = DateTime.Now; user = new ApplicationUser { UserName = invitation.Email, Email = invitation.Email, FirstName = invitation.FirstName, LastName = invitation.LastName, Registered = now, MemberState = MemberState.Student, Remark = "CIE", ExpiryDate = null, // Einladung bleibt dauerhaft bestehen - Deprovisionierung automatisch Submitted = now, EmailConfirmed = true, // damit ist auch ein "ForgotPassword" möglich, auch wenn er die Einladung nicht angenommen hat. IsApproved = true, // Damit bekommt der Nutzer von Anfang an E-Mails Faculty = host.Id // Benutzer der eingeladen hat }; // Benutzer anlegen, mit Dummy Passwort var result = UserManager.Create(user, "Cie98#lcl?"); if (result.Succeeded) { // analog Forget E-Mail Versand string code = UserManager.GeneratePasswordResetToken(user.Id); var mailModel = new ForgotPasswordMailModel { User = user, Token = code, CustomSubject = "Your NINE Account", CustomBody = "", Attachments = null, IsNewAccount = true, }; try { new MailController().InvitationMail(mailModel, host, "en").Deliver(); } catch (SmtpFailedRecipientException ex) { invitation.Remark = ex.Message; } } } var student = studentService.GetCurrentStudent(user); if (student == null) { student = new Student(); student.Created = DateTime.Now; student.Curriculum = invitation.Curriculum; student.FirstSemester = invitation.Semester; student.UserId = user.Id; Db.Students.Add(student); } if (invitation.Course != null) { var subscription = invitation.Course.Occurrence.Subscriptions.FirstOrDefault(x => x.UserId.Equals(user.Id)); if (subscription == null) { subscription = new OccurrenceSubscription(); subscription.TimeStamp = DateTime.Now; subscription.UserId = user.Id; subscription.OnWaitingList = invitation.OnWaitinglist; subscription.Occurrence = invitation.Course.Occurrence; subscription.HostRemark = invitation.Remark; invitation.Course.Occurrence.Subscriptions.Add(subscription); } } } Db.SaveChanges(); return(View("InvitationList", invitationList)); }