public void RegisterUser(UserInfoModel user) { if (!_phoneNumberHelper.IsValidMobileNumber(user.PhoneNumber)) { throw new ArgumentOutOfRangeException($"{user.PhoneNumber} is invalid."); } var existingUser = Fit2WorkDb.Users .Include("Client") .FirstOrDefault(u => u.ClientId == user.ClientId && u.PhoneNumber.Equals(user.PhoneNumber)); if (existingUser == null) { throw new ArgumentNullException( $"Failed to find user for client ({user.ClientId}) and phone number ({user.PhoneNumber})."); } if (existingUser.Client.IsDeleted) { throw new ArgumentException($"Failed to find active client ({existingUser.ClientId}) for user."); } user.ClientId = existingUser.ClientId; user.Id = existingUser.Id; user.FirstName = existingUser.FirstName; user.LastName = existingUser.LastName; user.RegisteredDate = existingUser.RegisteredDate = DateTime.UtcNow; Fit2WorkDb.SaveChanges(); }
public void CreateClient(ClientModel newClient) { newClient.IsDeleted = false; newClient.CreatedDate = DateTime.UtcNow; Fit2WorkDb.Clients.Add(newClient); Fit2WorkDb.SaveChanges(); }
public void MarkSmsSent(int id) { var user = Fit2WorkDb.Users.SingleOrDefault(u => u.Id == id); user.SmsSentDate = DateTime.UtcNow; Fit2WorkDb.SaveChanges(); }
public IList <MessageResult> SendMessageToClientUsers( ClientModel client, List <UserInfoModel> userList, Action <string> progress) { var results = new List <MessageResult>(); var messageText = PopulatePlaceHoldersForClient( _resourceProvider.UserMessageText, client); var downloadMessageText = PopulatePlaceHoldersForDownloadLinks(_resourceProvider.DownloadMessageText); progress.Invoke($"Sending SMS :: {messageText} and {downloadMessageText}"); foreach (var user in userList) { try { var result = _smsProvider.SendSMS( user.PhoneNumber, messageText); progress.Invoke($"{(result.IsOk ? "SUCCESS" : "FAILED")} :: SMS to {user.PhoneNumber}. " + $"{(result.Exception == null ? string.Empty : result.Exception.Message)}"); _smsProvider.SendSMS(user.PhoneNumber, downloadMessageText); if (result.IsOk) { var dbUser = Fit2WorkDb.Users.SingleOrDefault(u => u.Id == user.Id); dbUser.SmsSentDate = DateTime.UtcNow; Fit2WorkDb.SaveChanges(); } } catch (Exception ex) { progress.Invoke($"Failed to send SMS to {user.PhoneNumber} : {ex.Message}"); } } progress.Invoke($"Sending SMS complete!"); return(results); }
public ActionResult Edit([Bind(Include = "Id,CultureCode,EmailHeader,EmailFooter," + "PrimaryEmailSubject,PrimaryEmailBody," + "SecondaryEmailSubject,SecondaryEmailBody," + "UserMessageText,UserPrimaryMessageText,UserSecondaryMessageText,DownloadMessageText")] ResourceModel resourceModel) { if (ModelState.IsValid) { var resources = Fit2WorkDb.Resources .SingleOrDefault(r => r.Id == resourceModel.Id); resources.EmailHeader = resourceModel.EmailHeader; resources.EmailFooter = resourceModel.EmailFooter; resources.PrimaryEmailSubject = resourceModel.PrimaryEmailSubject; resources.PrimaryEmailBody = resourceModel.PrimaryEmailBody; resources.SecondaryEmailSubject = resourceModel.SecondaryEmailSubject; resources.SecondaryEmailBody = resourceModel.SecondaryEmailBody; resources.UserMessageText = resourceModel.UserMessageText; resources.UserPrimaryMessageText = resourceModel.UserPrimaryMessageText; resources.UserSecondaryMessageText = resourceModel.UserSecondaryMessageText; resources.DownloadMessageText = resourceModel.DownloadMessageText; Fit2WorkDb.SaveChanges(); return(RedirectToAction("Index")); } return(View(resourceModel)); }
protected override void Dispose(bool disposing) { if (disposing) { Fit2WorkDb.Dispose(); } base.Dispose(disposing); }
public ActionResult DeleteConfirmed(int id) { ResourceModel resourceModel = Fit2WorkDb.Resources.Find(id); Fit2WorkDb.Resources.Remove(resourceModel); Fit2WorkDb.SaveChanges(); return(RedirectToAction("Index")); }
public void SubmitReminderSettings(ReminderSettingsReceiver user) { UserInfoModel existingUser = Fit2WorkDb.Users.Find(user.UserId); existingUser.ReminderSettings = user.ReminderSettings; existingUser.ReminderSettingsUpdatedDate = DateTime.Now; Fit2WorkDb.SaveChanges(); }
public BaseController() { Fit2WorkDb = new Fit2WorkDb(); ClientService = new ClientService(Fit2WorkDb); UserService = new UserService(Fit2WorkDb); MessageService = new MessageService(Fit2WorkDb); LoggingService = new LoggingService(Fit2WorkDb); ResourceProvider = new ResourceProvider(Fit2WorkDb); }
public ActionResult Create([Bind(Include = "Id,CultureCode,Name,Url")] ResourceUrlModel resourceUrlModel) { if (ModelState.IsValid) { Fit2WorkDb.ResourceUrls.Add(resourceUrlModel); Fit2WorkDb.SaveChanges(); return(RedirectToAction("Index")); } return(View(resourceUrlModel)); }
public void DeactivateClient(int clientId) { var client = Fit2WorkDb.Clients.FirstOrDefault(c => c.Id == clientId); if (client == null) { throw new ApplicationException($"Client ({clientId}) not found."); } client.IsDeleted = true; Fit2WorkDb.SaveChanges(); }
public ActionResult Edit([Bind(Include = "Id,CultureCode,Name,Url")] ResourceUrlModel resourceUrlModel) { if (ModelState.IsValid) { var resourceUrl = Fit2WorkDb.ResourceUrls .SingleOrDefault(r => r.Id == resourceUrlModel.Id); resourceUrl.Name = resourceUrlModel.Name; resourceUrl.Url = resourceUrlModel.Url; Fit2WorkDb.SaveChanges(); return(RedirectToAction("Index")); } return(View(resourceUrlModel)); }
public ActionResult Create([Bind(Include = "Id,CultureCode,EmailHeader,EmailFooter," + "PrimaryEmailSubject,PrimaryEmailBody," + "SecondaryEmailSubject,SecondaryEmailBody," + "UserMessageText,UserPrimaryMessageText,UserSecondaryMessageText")] ResourceModel resourceModel) { if (ModelState.IsValid) { Fit2WorkDb.Resources.Add(resourceModel); Fit2WorkDb.SaveChanges(); return(RedirectToAction("Index")); } return(View(resourceModel)); }
/// <summary> /// Createa a new user and returns a string for logging /// </summary> /// <param name="user"></param> /// <param name="saveChangesImmediatly"></param> /// <returns></returns> public string CreateUser(UserInfoModel user, bool saveChangesImmediatly = true) { if (!_phoneNumberHelper.IsValidMobileNumber(user.PhoneNumber)) { return($"INVALID, {user.FirstName}, {user.LastName}, {user.PhoneNumber}"); } // Check for existing user (using phone number) as users may be uploaded several times var existingUser = Fit2WorkDb.Users .FirstOrDefault(u => u.ClientId == user.ClientId && u.PhoneNumber.Equals(user.PhoneNumber)); if (existingUser != null) { // Found an existing user - update and save user.Id = existingUser.Id; existingUser.FirstName = user.FirstName; existingUser.LastName = user.LastName; existingUser.UpdatedDate = user.UpdatedDate = DateTime.UtcNow; } else { // Create user for the first time user.CreatedDate = DateTime.UtcNow; Fit2WorkDb.Users.Add(user); } if (saveChangesImmediatly) { Fit2WorkDb.SaveChanges(); } var createdUpdated = existingUser == null ? "CREATED" : "UPDATED"; return($"{createdUpdated}, {user.FirstName}, {user.LastName}, {user.PhoneNumber}"); }
public void UpdateClient(int id, ClientModel client) { var existingClient = GetClientById(id); if (existingClient == null) { throw new ApplicationException($"Unable to find client ({id})"); } // Check code is unique for the client if (Fit2WorkDb.Clients.Any(c => c.Id != id && c.MemberCode.ToLower().Equals(client.MemberCode.ToLower()))) { throw new ApplicationException( $"Client code ({client.MemberCode}) is not unique."); } existingClient.Name = client.Name; existingClient.MemberCode = client.MemberCode; existingClient.PrimaryEmailAddress = client.PrimaryEmailAddress; existingClient.SecondaryEmailAddress = client.SecondaryEmailAddress; existingClient.IsDeleted = client.IsDeleted; existingClient.UpdatedDate = DateTime.UtcNow; Fit2WorkDb.SaveChanges(); }
private void CreateUserQuestionnaire(UserQuestionnaireModel questionnaire) { questionnaire.User = Fit2WorkDb.Users.Include("Client") .FirstOrDefault(u => u.Id == questionnaire.UserId); if (questionnaire.User == null) { throw new ApplicationException( $"Failed to find user ({questionnaire.User.Id}) for questionnaire."); } if (questionnaire.User.Client == null) { throw new ApplicationException( $"Failed to find client for user ({questionnaire.User.Id}) for questionnaire."); } questionnaire.Client = questionnaire.User.Client; if (questionnaire.User.Client.IsDeleted) { throw new ApplicationException( $"Failed to find active client ({questionnaire.User.Client.Id}) for questionnaire."); } questionnaire.CreatedDate = DateTime.UtcNow; Fit2WorkDb.UserQuestionnaires.Add(questionnaire); Fit2WorkDb.SaveChanges(); }
/// <summary> /// Import users a given file where client is provided in the file. /// Expecting CSV with MemberCode, FirstName, LastName, PhoneNumber. /// </summary> public void ImportUsers(string file, Action <string> progress) { // NOTE: This logs progress for the call method to handle // but also internally logs to Fit2WorkDb for ease of viewing by non-dev staff var importLog = new StringBuilder(); importLog.AppendLine($"Importing file :: {file}..."); var isValid = true; // assume all is good try { ClientModel client = null; using (var reader = _fileSystemService.GetCSVReaderFromPath(file)) { bool first = true; int rowNumber = 1; while (!reader.EndOfStream) { var userRow = reader.ReadLine().Split(','); // Ignore header row if (first) { first = false; continue; } if (client == null) { var fileMemberCode = userRow[0]; client = Fit2WorkDb.Clients .FirstOrDefault(c => c.MemberCode.ToUpper().Equals(fileMemberCode.ToUpper())); if (client == null) { throw new ApplicationException( $"Failed to find client for member code {fileMemberCode}."); } } var user = new UserInfoModel { ClientId = client.Id, FirstName = userRow[1], LastName = userRow[2], PhoneNumber = userRow[3], CreatedDate = DateTime.UtcNow }; var logResult = $"Row [{rowNumber}], {CreateUser(user, false)}"; if (logResult.Contains("INVALID")) { isValid = false; } importLog.AppendLine(logResult); rowNumber++; } } Fit2WorkDb.SaveChanges(); } catch (Exception ex) { importLog.AppendLine($"IMPORT FAILED :: {ex}"); _loggingService.LogError( new ApplicationException($"Import failed for file {file}", ex)); throw ex; } finally { if (!isValid) { importLog.AppendLine("Import had issues. File contains invalid users"); } importLog.AppendLine($"Import completed!"); var importLogAsString = importLog.ToString(); _loggingService.LogMessage($"Import completed for file '{file}'", importLog.ToString()); progress.Invoke(importLog.ToString()); } }