Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
        }
Пример #4
0
        public ActionResult Invitation(InvitationFileModel model)
        {
            var invitationList = CreateCheckModel(model);

            return(View("InvitationList", invitationList));
        }
Пример #5
0
        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));
        }