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); }
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)); }
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); }