public async Task <ActionResponse> AddStudent(int batchId, string roll, string name, string email, string phone)
        {
            var batch = await _db.Batches.FirstOrDefaultAsync(x => x.Id == batchId);

            if (batch == null)
            {
                return(new ActionResponse(false, "Invalid Batch"));
            }

            var user = await _db.Users.FirstOrDefaultAsync(x => x.UserName == roll);

            if (user != null)
            {
                return(new ActionResponse(false, "Roll already exists"));
            }
            else
            {
                var allCourses = await _db.Courses.Where(x => x.Semester.Batch.Id == batchId)
                                 .ToListAsync();

                int.TryParse(roll, out int studentRoll);
                var student = new DBUser()
                {
                    Batch                = batch,
                    Email                = email,
                    EnrolledIn           = CurrentTime,
                    Name                 = name,
                    UserName             = roll,
                    Roll                 = studentRoll,
                    Role                 = AppConstants.Student,
                    PhoneNumber          = FixPhone(phone),
                    PhoneNumberConfirmed = false
                };
                var idUser = IdentityDBUser.Create(student);
                var res    = await _usermanager.CreateAsync(idUser);

                if (res.Succeeded)
                {
                    var mRes = await _usermanager.AddToRoleAsync(idUser, AppConstants.Student);

                    if (mRes.Succeeded)
                    {
                        foreach (var course in allCourses)
                        {
                            _db.StudentCourses.Add(new StudentCourse()
                            {
                                Course  = course,
                                Student = student
                            });
                        }
                        await _db.SaveChangesAsync();

                        var msg = EmailMessageCreator.CreateInvitation(phone, roll);
                        _emailSender.SendEmailAsync(student.Email, "Registration", msg);
                        return(new ActionResponse(true));
                    }
                }
                return(new ActionResponse(false, "Failed to create User"));
            }
        }
        internal async Task <List <DBUser> > AddStudents(IList <DBUser> students, int batchID)
        {
            var users = new List <DBUser>();
            var batch = await _db.Batches.FindAsync(batchID);

            var allCourses = await _db.Courses.Where(x => x.Semester.Batch.Id == batchID)
                             .ToListAsync();

            foreach (var student in students)
            {
                var oldUser = await _db.Users.FirstOrDefaultAsync(x => x.UserName == student.UserName);

                if (oldUser != null)
                {
                    continue;
                }

                student.Batch                = batch;
                student.PhoneNumber          = FixPhone(student.PhoneNumber);
                student.UserName             = student.Roll.ToString();
                student.PhoneNumberConfirmed = false;
                student.Role = AppConstants.Student;

                var idbUser = IdentityDBUser.Create(student);
                var res     = await _usermanager.CreateAsync(idbUser);

                if (res.Succeeded)
                {
                    await _usermanager.AddToRoleAsync(idbUser, AppConstants.Student);

                    foreach (var course in allCourses)
                    {
                        _db.StudentCourses.Add(new StudentCourse()
                        {
                            Course  = course,
                            Student = student
                        });
                    }
                }
                var msg = EmailMessageCreator.CreateInvitation(student.PhoneNumber, student.UserName);
                _emailSender.SendEmailAsync(student.Email, "Registration", msg);
            }
            await _db.SaveChangesAsync();

            return(users);
        }
Esempio n. 3
0
        public async Task <IActionResult> Send([FromForm] SendEmailRequest request, [FromServices] IGoogleAuthProvider auth)
        {
            if (!ModelState.IsValid)
            {
                return(View("Index", new List <Destination>(_emailsService.Get())));
            }

            var credentials = await auth.GetCredentialAsync().ConfigureAwait(false);

            var gmailService = new GmailService(new BaseClientService.Initializer
            {
                HttpClientInitializer = credentials,
                ApplicationName       = "EmailSender"
            });

            var destinations = _emailsService.Get();
            int sections     = (destinations.Count / 5) + 1;
            var tasks        = new List <Task>(5);

            for (int i = 0; i < sections; i++)
            {
                var currFive = destinations.Skip(i * 5).Take(5);
                tasks.Clear();

                foreach (var destination in currFive)
                {
                    string body    = request.Template.Replace("{0}", destination.Name);
                    var    message = new Message
                    {
                        Raw = EmailMessageCreator.Message(destination.Name, destination.Email, request.Subject, body)
                    };

                    var compose = new UsersResource.MessagesResource.SendRequest(gmailService, message, "me");
                    tasks.Add(compose.ExecuteAsync());
                }

                await Task.WhenAny(tasks).ConfigureAwait(false);

                await Task.Delay(1000).ConfigureAwait(false);
            }

            _emailsService.RemoveAll();

            return(Redirect("/"));
        }
        public async Task <ActionResponse> RecoverPasswordPhoneNo(string rollNo, string phoneNo, string password)
        {
            var dbUser = await _db.Users.FirstOrDefaultAsync(x => x.PhoneNumber == phoneNo);

            if (dbUser == null)
            {
                return(new ActionResponse(false, "Invalid Mobile No. Contact Admin"));
            }

            var token = await _usermanager.GeneratePasswordResetTokenAsync(dbUser);

            var resetRes = await _usermanager.ResetPasswordAsync(dbUser, token, password);


#if DEBUG
#else
            var msg = EmailMessageCreator.CreatePasswordRecovery();
            _emailSender.SendEmailAsync(dbUser.Email, "Password Recover", msg);
#endif
            return(new ActionResponse(true));
        }
Esempio n. 5
0
    public bool SendEmail(int emailId)
    {
        if (emailId <= 0)
        {
            Logger.Error("Incorrect emailId: " + emailId);
            return(false);
        }

        EmailData emailData = DatabaseManager.GetEmailData(emailId);

        if (emailData == null)
        {
            Logger.Error("Email data is null (emailId: " + emailId + ")");
            return(false);
        }

        EmailMessage emailMessage = EmailMessageCreator.CreateEmailMessage(emailData);

        if (!ValidateEmailMessage(emailMessage))
        {
            Logger.Error("Email message is not valid (emailId: " + emailId + ")");
            return(false);
        }

        try
        {
            EmailSender.SendEmail(emailMessage);
            Logger.Info("Email was sent!");
        }
        catch (Exception ex)
        {
            Logger.Exception(ex.ToString());
            return(false);
        }

        return(true);
    }