public static string GetDashboardString(Saturn5Status status) { switch (status) { case Saturn5Status.InDepotMissing: return("In Depot - Missing"); case Saturn5Status.InDepot: return("In Depot"); case Saturn5Status.InDepotFaulty: return("In Depot - Faulty"); case Saturn5Status.InDepotDamaged: return("In Depot - Damaged"); case Saturn5Status.WithUser: return("With User"); case Saturn5Status.WithStarUser: return("With Star User"); case Saturn5Status.WithManager: return("With Manager"); default: throw new NotImplementedException($"Saturn5Status value {status} has to be implemented."); } }
public Saturns5DashboardEntry(string serialNumber, string shortId, Saturn5Status status, string phoneNumber, string lastSeenDate, string lastSeenTime, string lastSeenUsername, string lastSeenFirstName, string lastSeenSurname) { this.SerialNumber = serialNumber.Trim().ToUpper(); this.ShortId = shortId.Trim().ToUpper(); this.Status = status; this.PhoneNumber = phoneNumber; this.LastSeenDate = lastSeenDate; this.LastSeenFirstName = lastSeenFirstName; this.LastSeenUsername = lastSeenUsername.Trim().ToUpper(); }
public static string ToValueString(this Saturn5Status status) { return(((int)status).ToString()); }
public static bool IsInDepot(this Saturn5Status status) { return(!status.IsWithUser()); }
public static bool IsWithUser(this Saturn5Status status) { return(status == Saturn5Status.WithUser || status == Saturn5Status.WithStarUser || status == Saturn5Status.WithManager); }
// Update public void UpdateUserDetails(User user) { // Thread safety lock lock (this.DashboardDataLock) { // Get live spreadsheets database reference. LiveSpreadsheetsDb db = this._dataRepository.GoogleService.SpreadsheetsDb; // Loop through all the rows in the dashboard // Loop through each of the rows (apart from the header row) in the LiveSheet containing saturn 5 database. for (int i = 1; i < this._dashboardSheet.RowCount; i++) { // Obtain dashboard row located on the currently looped through index... LiveRow dashboardRow = this._dashboardSheet[i]; // ... get the cell containing last seen Username for the specific saturn unit located on the dashboard row... LiveCell usernameCell = dashboardRow[Saturns5DashboardRepository.Saturns5Dashboard_LastSeenUserUsername]; // ... get the username data from that cell... string dashboardRowUsername = usernameCell.GetDataAsString(); // ... and compare provided user Username with dashboard row saturn 5 last seen username, // if they are found being equal, update data in other user related cells. if (user.Username == dashboardRowUsername) { // Boolean flag indicating necessity for updating the changes. bool changesRequired = false; LiveCell firstNameCell = dashboardRow[Saturns5DashboardRepository.Saturns5Dashboard_LastSeenUserFirstName]; LiveCell surnameCell = dashboardRow[Saturns5DashboardRepository.Saturns5Dashboard_LastSeenUserSurname]; LiveCell userSpreadsheetURLCell = dashboardRow[Saturns5DashboardRepository.Saturns5Dashboard_LastSeenUserSpreadsheetURL]; LiveCell saturn5StatusCell = dashboardRow[Saturns5DashboardRepository.Saturns5Dashboard_Status]; string currentFirstName = firstNameCell.GetDataAsString(); string currentSurname = surnameCell.GetDataAsString(); string currentSpreadsheetURL = userSpreadsheetURLCell.GetDataAsString(); // Obtain status from the dashboard cell associated with the saturn 5 // with (according dashboard) the same last user as the one provided for update. Saturn5Status currentStatus = Saturn5StatusService.GetStatusFromDashboardString(saturn5StatusCell.GetDataAsString()); if (currentStatus.IsWithUser()) { // Get saturn5 status according the type of the user the saturn5 is getting allocated to. Saturn5Status status = user.Type.GetWithUserSaturn5Status(); if (currentStatus != status) { changesRequired = true; saturn5StatusCell.SetData(Saturn5StatusService.GetDashboardString(status)); } } if (currentFirstName != user.FirstName) { changesRequired = true; firstNameCell.SetData(user.FirstName); } if (currentSurname != user.Surname) { changesRequired = true; surnameCell.SetData(user.Surname); } string userSpreadsheetId = this._dataRepository.UserRepository.GetUserLogSpreadsheetId(dashboardRowUsername); string newSpreadsheetURL = this.GetUrlFromSpreadsheetId(userSpreadsheetId); if (currentSpreadsheetURL != newSpreadsheetURL) { changesRequired = true; userSpreadsheetURLCell.SetData(newSpreadsheetURL); } if (changesRequired) { dashboardRow.Upload(db); } } } } }