public ActionResult SendingSystem() { MailsViewModel model = new MailsViewModel(); model.SendingSystems = mng.Mails.GetSendingSystems(); return(View(model)); }
public JsonResult NotifyPortalDown(string institution, string ip, string mailReceiver) { institution = institution ?? ""; ip = ip ?? ""; mailReceiver = mailReceiver ?? ""; try { var emailContent = new MailsViewModel { Code = institution, Email = mailReceiver, MailMethod = MailSendMethod.PortalDown, Subject = $"{institution} portal is inaccessible", PortalUrl = ip }; var emailResponse = emailSender.SendEmail(emailContent); _context.InaccessibiltyLog.Add(new InaccessibiltyLog { Ip = ip, Institution = institution, MailReceiver = mailReceiver, DateCreated = DateTime.UtcNow.AddHours(3) }); _context.SaveChanges(); return(Json("")); } catch (Exception ex) { return(Json("")); } }
public ActionResult MailStatuses() { MailsViewModel model = new MailsViewModel(); model.mailStatuses = mng.Mails.GetMailStatuses(); return(View(model)); }
private void NotifyPortalDown(ClientIp ip) { var mailReceiver = "*****@*****.**"; try { var emailContent = new MailsViewModel { Code = ip.Institution, Email = mailReceiver, MailMethod = MailSendMethod.PortalDown, Subject = $"{ip.Institution} portal is inaccessible", PortalUrl = ip.Ip }; var emailResponse = emailSender.SendEmail(emailContent); _context.InaccessibiltyLog.Add(new InaccessibiltyLog { Ip = ip.Ip, Institution = ip.Institution, MailReceiver = mailReceiver, DateCreated = DateTime.UtcNow.AddHours(3) }); } catch (Exception) { } }
public ActionResult Mails() { MailsViewModel model = new MailsViewModel(); model.System = mng.Mail.GetSystems(); model.Statuses = mng.Mail.GetStatuses(); return(View(model)); }
public bool SendEmail(MailsViewModel mailsViewModel) { try { mailsViewModel.Email = string.IsNullOrEmpty(_configuration["RegTestEmail:EmailAddress"]) ? mailsViewModel.Email : _configuration["RegTestEmail:EmailAddress"]; var emailAddress = new EmailAddress { Name = mailsViewModel.Firstname + "<" + mailsViewModel.UserCode + ">", Address = mailsViewModel.Email }; var UnisolPortalUrl = mailsViewModel.PortalUrl; var varificationLink = $"{UnisolPortalUrl}/login/confirm/{mailsViewModel.Code}"; if (mailsViewModel.MailMethod == MailSendMethod.PasswordReset) { varificationLink = $"{UnisolPortalUrl}/login/reset-password/{mailsViewModel.Code}"; } var emailSettings = _context.Settings.FirstOrDefault(); var address = new EmailAddress { Name = emailSettings == null ? _configuration["Settings:DefaultInstitutionName"] : emailSettings.Name, Address = emailSettings == null ? _configuration["RegTestEmail:EmailAddress"] : emailSettings.EmailUserName }; address = emailSettings == null ? _emailConfiguration.SmtpFromName : address; var logoUrl = emailSettings.LogoImageUrl.Split("/"); var assetUrl = Path.Combine(_env.WebRootPath, logoUrl[1]); var imageFlderUrl = Path.Combine(assetUrl, logoUrl[2]); var logoImageUrl = Path.Combine(imageFlderUrl, logoUrl[3]); var emailMessage = new EmailMessage { ToAddresses = new List <EmailAddress> { emailAddress }, Content = getMailMessage(mailsViewModel.Firstname, varificationLink, mailsViewModel.Code, address, mailsViewModel.MailMethod), Subject = mailsViewModel.Subject, FromAddresses = new List <EmailAddress> { address }, InstitutionLogo = logoImageUrl }; var interfaceResponse = _emailService.Send(emailMessage, emailSettings); return(interfaceResponse.Result); } catch (Exception ex) { logger.Error($"\t EmailConfigurationError: \t {ex}"); return(false); } }
private JsonResult CreateAdminUser(RegisterViewModel request) { try { var adminCheck = _context.Users.FirstOrDefault(u => u.UserName == request.RegNumber); if (adminCheck != null) { if (adminCheck.UserName == request.RegNumber) { return(Json(new ReturnData <HrpEmployee> { Success = false, Message = "Please user a different username" })); } if (adminCheck.Email == request.Email) { return(Json(new ReturnData <HrpEmployee> { Success = false, Message = "Please user a different email address" })); } } var user = new User { Email = request.Email, UserName = request.RegNumber, Code = Guid.NewGuid().ToString(), UserGroupsId = request.UserGroup, Role = Role.Admin }; _context.Users.Add(user); _context.SaveChanges(); mailMethod = MailSendMethod.AccountConfirmation; var subject = "Account Creation"; var emailContent = new MailsViewModel { UserCode = user.UserName, Firstname = request.Email, Code = user.Code, Email = request.Email, PortalUrl = request.PortalUrl, MailMethod = mailMethod, Subject = subject }; var success = emailSender.SendEmail(emailContent); var msg = "Account created successfully. "; return(Json(new ReturnData <bool> { Success = success, Message = success ? msg + "Check email inbox" : msg })); } catch (Exception ex) { return(Json(new ReturnData <bool> { Success = false, Message = ex.Message })); } }
public JsonResult ResetPassword(RegisterViewModel request) { request.Password = request.Password ?? ""; var requiredFields = new List <Tuple <string, string, DataType> > { Tuple.Create("username", request.RegNumber, DataType.Default), }; var validUserInputs = _validateService.Validate(requiredFields); if (!validUserInputs.Valid) { return(Json(new ReturnData <string> { Message = validUserInputs.Errors, Success = validUserInputs.Valid })); } try { var registeredUser = _context.Users.FirstOrDefault(u => (u.UserName.ToUpper().Equals(request.RegNumber.ToUpper())) || (u.Code.ToString() == request.RegNumber) || (u.Id.ToString() == request.RegNumber)); if (registeredUser == null) { return(Json(new ReturnData <string> { Success = false, Message = "Username not found" })); } if (string.IsNullOrEmpty(registeredUser.UserName)) { return(Json(new ReturnData <string> { Success = false, Message = "Username not found" })); } registeredUser.PasswordHash = registeredUser.PasswordHash ?? ""; var hashedNewPassword = SecurePasswordHasher.Hash(request.Password); if (hashedNewPassword.ToUpper().Equals(registeredUser.PasswordHash.ToUpper())) { return(Json(new ReturnData <string> { Success = false, Message = "Kindly use a different password from the previous" })); } var userResetPassword = new UserResetPassword(); if ((request.Role == Role.Admin) || (request.Role == Role.All)) { userResetPassword = _context.UserResetPasswords.FirstOrDefault(u => u.UserId == registeredUser.Id && u.Status == false); registeredUser.PasswordHash = SecurePasswordHasher.Hash(request.Password); registeredUser.EmailConfirmed = true; registeredUser.Status = true; if (userResetPassword != null) { userResetPassword.Status = true; _context.Update(userResetPassword); } _context.Update(registeredUser); _context.SaveChanges(); return(Json(new ReturnData <string> { Success = true, Message = "Password reset successful" })); } userResetPassword = new UserResetPassword { UserId = registeredUser.Id, ResetCode = Guid.NewGuid().ToString(), DateCreated = DateTime.Now, Status = false }; var success = false; var userGroup = _context.UserGroups.FirstOrDefault(u => u.Id == registeredUser.UserGroupsId); mailMethod = MailSendMethod.PasswordReset; var subject = "Reset Account Password"; if (userGroup?.Role == Role.Student) { var classStatus = _context.Settings.FirstOrDefault()?.ClassStatus; var result = _unisolApiProxy.CheckStudentExists(request.RegNumber, classStatus).Result; var jdata = new ProcessJsonReturnResults <UserDetails>(result).UnisolApiData; var emailContent = new MailsViewModel { UserCode = request.RegNumber, Firstname = jdata.Data.Names, Code = userResetPassword.ResetCode, Email = registeredUser.Email, MailMethod = mailMethod, PortalUrl = request.PortalUrl, Subject = subject }; success = emailSender.SendEmail(emailContent); } if (userGroup?.Role == Role.Staff) { var result = _unisolApiProxy.CheckEmployeeExists(request.RegNumber).Result; var jdata = JsonConvert.DeserializeObject <ReturnData <HrpEmployee> >(result); var emailContent = new MailsViewModel { UserCode = request.RegNumber, Firstname = jdata.Data.Names, PortalUrl = request.PortalUrl, Code = userResetPassword.ResetCode, Email = registeredUser.Email, MailMethod = mailMethod, Subject = subject }; success = emailSender.SendEmail(emailContent); } if (success) { registeredUser.Code = userResetPassword.ResetCode; _context.SaveChanges(); var email = registeredUser.Email.Split('@'); return(Json(new ReturnData <bool> { Success = true, Message = $"We have sent a link to reset your password, please check your email ({email[0].Substring(0, 1)}*****{email[0].Substring(email[0].Length - 2)}@{email[1]})." })); } return(Json(new ReturnData <bool> { Success = false, Message = "There was a problem while trying reset your password, please contact admin" })); } catch (Exception ex) { return(Json(new ReturnData <string> { Success = false, Message = "Something went wrong, please try again after sometime.", Error = new Error(ex) })); } }
private ReturnData <bool> CreateStaffUser(RegisterViewModel request, bool isAdmin, bool isTest) { var result = _unisolApiProxy.CheckEmployeeExists(request.RegNumber).Result; var jdata = JsonConvert.DeserializeObject <ReturnData <HrpEmployee> >(result); if (!jdata.Success) { return new ReturnData <bool> { Success = false, Message = jdata.Message } } ; var defaultStaffGroup = _context.UserGroups.FirstOrDefault(u => u.Status && u.IsDefault && u.Role == Role.Staff); if (defaultStaffGroup == null) { logger.Error($"UserRegistrationDefaultStaffGroup: \t Students default group not set"); return(new ReturnData <bool> { Success = false, Message = "There was a problem while creating your account, please contact admin" }); } var groupId = string.IsNullOrEmpty(request.UserGroup.ToString()) || request.UserGroup < 1 ? defaultStaffGroup.Id : request.UserGroup; var register = jdata.Data; var user = new User { UserName = request.RegNumber, Email = register.Wemail, UserGroupsId = groupId, Code = Guid.NewGuid().ToString(), EmailConfirmed = isAdmin, Role = Role.Staff, PasswordHash = SecurePasswordHasher.Hash(request.Password) }; if (!isAdmin) { groupId = defaultStaffGroup.Id; mailMethod = MailSendMethod.AccountConfirmation; var subject = "Account Creation"; var emailContent = new MailsViewModel { UserCode = request.RegNumber, Firstname = register.Names, Code = user.Code, Email = register.Wemail, MailMethod = mailMethod, Subject = subject, PortalUrl = request.PortalUrl }; var success = emailSender.SendEmail(emailContent); if (!success) { return new ReturnData <bool> { Success = false, Message = "A problem occurred while sending an email for account creation, please contact admin" } } ; } _context.Users.Add(user); _context.SaveChanges(); return(new ReturnData <bool> { Success = true, Message = "Account created successfully" }); }
private ReturnData <bool> CreateStudentUser(RegisterViewModel request, bool isAdmin, bool isTest) { var classStatus = _context.Settings.FirstOrDefault()?.ClassStatus ?? "Active"; var result = _unisolApiProxy.CheckStudentExists(request.RegNumber, classStatus).Result; var jdata = new ProcessJsonReturnResults <Register>(result).UnisolApiData; if (!jdata.Success) { return new ReturnData <bool> { Success = false, Message = jdata.Message } } ; var defaultStudentGroup = _context.UserGroups.FirstOrDefault(u => u.Status && u.IsDefault && u.Role == Role.Student); if (defaultStudentGroup == null) { logger.Error($"UserRegistrationDefaultStudentGroup: \t Students default group not set"); return(new ReturnData <bool> { Success = false, Message = "There was a problem while creating your account, please contact admin" }); } var groupId = request.UserGroup == 0 ? defaultStudentGroup.Id : request.UserGroup; var register = jdata.Data; var passwordConfirmed = isAdmin ? true : false; var user = new User { UserName = request.RegNumber, Email = register.Email, UserGroupsId = groupId, Code = Guid.NewGuid().ToString(), EmailConfirmed = passwordConfirmed, Status = passwordConfirmed, Role = Role.Student, PasswordHash = SecurePasswordHasher.Hash(request.Password) }; if (!isAdmin) { groupId = defaultStudentGroup.Id; mailMethod = MailSendMethod.AccountConfirmation; var subject = "Account Creation"; if (!isTest) { var emailContent = new MailsViewModel { UserCode = request.RegNumber, Firstname = register.Names, Code = user.Code, Email = register.Email, MailMethod = mailMethod, Subject = subject, PortalUrl = request.PortalUrl }; var emailResponse = emailSender.SendEmail(emailContent); if (!emailResponse) { return new ReturnData <bool> { Success = false, Message = "Sorry, an error has been encountered while sending an email. Kindly contact admin" } } ; } } _context.Users.Add(user); _context.SaveChanges(); return(new ReturnData <bool> { Success = true, Message = "Account created successfully" }); }
public JsonResult AddNews(NewsViewModel newsViewModel, string userCode) { try { var token = _tokenValidator.Validate(HttpContext); if (!token.Success) { return(Json(new ReturnData <string> { Success = false, NotAuthenticated = true, Message = $"Unauthorized:-{token.Message}", })); } if (token.Role == Role.Student) { return(Json(new ReturnData <string> { Success = false, NotAuthenticated = true, Message = "Sorry, you are not authorized to perform this action", })); } newsViewModel.DateCreated = DateTime.UtcNow; var portalNewsTypes = _context.PortalNewsTypes.Any(); var message = portalNewsTypes ? "Please select news category" : "Please create news category"; if (newsViewModel.PortalNewsTypeId == 0) { return(Json(new ReturnData <string> { Success = false, Message = message })); } if (string.IsNullOrEmpty(newsViewModel.NewsBody)) { return(Json(new ReturnData <string> { Success = false, Message = "Message can not be empty" })); } var creator = _context.Users.FirstOrDefault(u => u.UserName == userCode); var news = new PortalNews { NewsBody = newsViewModel.NewsBody, DateCreated = newsViewModel.DateCreated, ExpiryDate = newsViewModel.ExpiryDate, NewsStatus = newsViewModel.NewsStatus, NewsTitle = newsViewModel.NewsTitle, PortalNewsTypeId = newsViewModel.PortalNewsTypeId, SendEmailFlag = newsViewModel.SendEmailFlag, TargetAudience = newsViewModel.TargetAudience, CreatorId = creator.Id, TargetGroups = newsViewModel.TargetGroups }; if (newsViewModel.Id.HasValue && newsViewModel.Id.Value > 0) { _context.PortalNews.Update(news); } else { _context.PortalNews.Add(news); } if (newsViewModel.SendEmailFlag) { //int[] groupIds = newsViewModel.TargetAudience.Split(',').Select(s => int.TryParse(s, out int n) ? n : 0).ToArray(); var users = _context.Users.Where(u => u.UserGroupsId == newsViewModel.TargetAudience).ToList(); foreach (var user in users) { var emailContent = new MailsViewModel { UserCode = user.UserName, Firstname = "", Code = newsViewModel.NewsBody, Email = user.Email, MailMethod = MailSendMethod.NewsPosting, PortalUrl = newsViewModel.portalUrl, Subject = newsViewModel.NewsTitle }; emailSender.SendEmail(emailContent); } } _context.SaveChanges(); return(Json(new ReturnData <string> { Success = true, Message = "Successful" })); } catch (Exception ex) { return(Json(new ReturnData <string> { Success = false, Message = "An error occurred,please retry : " + ex.Message })); } }
public JsonResult AddEvents(EventsViewModel eventsViewModel) { eventsViewModel.EventStartDate = eventsViewModel.EventStartDate.AddDays(1); eventsViewModel.EventEndDate = eventsViewModel.EventEndDate.AddDays(1); var token = _tokenValidator.Validate(HttpContext); if (!token.Success) { return(Json(new ReturnData <string> { Success = false, NotAuthenticated = true, Message = $"Unauthorized:-{token.Message}", })); } if (token.Role == Role.Student || token.Role == Role.Applicant) { return(Json(new ReturnData <string> { Success = false, NotAuthenticated = true, Message = "Sorry, you are not authorized to access this page", })); } var typeId = eventsViewModel.portalEventsTypeId ?? 0; eventsViewModel.DateCreated = DateTime.UtcNow; if (typeId == 0) { return(Json(new ReturnData <string> { Success = false, Message = "Please select event category" })); } try { var events = new PortalEvents { EventTitle = eventsViewModel?.EventTitle ?? "", EventDesc = eventsViewModel?.EventDesc ?? "", CreatedBy = eventsViewModel.CreatedBy, DateCreated = eventsViewModel.DateCreated, EventStartDate = eventsViewModel.EventStartDate, EventEndDate = eventsViewModel.EventEndDate, SendEmailFlag = eventsViewModel.SendEmailFlag, TargetAudience = eventsViewModel.TargetAudience, PortalEventTypeId = eventsViewModel.portalEventsTypeId, EventVenue = eventsViewModel?.EventVenue ?? "", TargetGroups = eventsViewModel?.TargetGroups ?? "", Campus = eventsViewModel?.Campus ?? "", Department = eventsViewModel?.Department ?? "", School = eventsViewModel?.School ?? "", YearOfStudy = eventsViewModel?.YearOfStudy ?? "" }; if (eventsViewModel.Id.HasValue && eventsViewModel.Id.Value > 0) { events.Id = events.Id; _context.PortalEvents.Update(events); } else { _context.PortalEvents.Add(events); } if (eventsViewModel.SendEmailFlag) { var users = _context.Users.Where(u => u.UserGroupsId == eventsViewModel.TargetAudience).ToList(); foreach (var user in users) { var emailContent = new MailsViewModel { UserCode = user?.UserName ?? "", Firstname = "", Code = eventsViewModel?.EventDesc ?? "", Email = user.Email, MailMethod = MailSendMethod.EventPosting, PortalUrl = eventsViewModel?.PortalUrl ?? "", Subject = eventsViewModel?.EventTitle ?? "" }; emailSender.SendEmail(emailContent); } } _context.SaveChanges(); return(Json(new ReturnData <string> { Success = true, Message = "Successful" })); } catch (Exception ex) { return(Json(new ReturnData <string> { Success = false, Message = "An error occurred,please retry : " + ex.Message })); } }