diff --git a/Controllers/APIController.cs b/Controllers/APIController.cs index 0da66a8..1bbff24 100644 --- a/Controllers/APIController.cs +++ b/Controllers/APIController.cs @@ -150,9 +150,7 @@ namespace CarCareTracker.Controllers { if (vehicleId == default) { - var response = new OperationResponse(); - response.Success = false; - response.Message = "Must provide a valid vehicle id"; + var response = OperationResponse.Failed("Must provide a valid vehicle id"); Response.StatusCode = 400; return Json(response); } @@ -165,23 +163,18 @@ namespace CarCareTracker.Controllers [Route("/api/vehicle/servicerecords/add")] public IActionResult AddServiceRecord(int vehicleId, GenericRecordExportModel input) { - var response = new OperationResponse(); if (vehicleId == default) { - response.Success = false; - response.Message = "Must provide a valid vehicle id"; Response.StatusCode = 400; - return Json(response); + return Json(OperationResponse.Failed("Must provide a valid vehicle id")); } if (string.IsNullOrWhiteSpace(input.Date) || string.IsNullOrWhiteSpace(input.Description) || string.IsNullOrWhiteSpace(input.Odometer) || string.IsNullOrWhiteSpace(input.Cost)) { - response.Success = false; - response.Message = "Input object invalid, Date, Description, Odometer, and Cost cannot be empty."; Response.StatusCode = 400; - return Json(response); + return Json(OperationResponse.Failed("Input object invalid, Date, Description, Odometer, and Cost cannot be empty.")); } try { @@ -209,16 +202,12 @@ namespace CarCareTracker.Controllers _odometerLogic.AutoInsertOdometerRecord(odometerRecord); } StaticHelper.NotifyAsync(_config.GetWebHookUrl(), vehicleId, User.Identity.Name, $"Added Service Record via API - Description: {serviceRecord.Description}"); - response.Success = true; - response.Message = "Service Record Added"; - return Json(response); + return Json(OperationResponse.Succeed("Service Record Added")); } catch (Exception ex) { - response.Success = false; - response.Message = ex.Message; Response.StatusCode = 500; - return Json(response); + return Json(OperationResponse.Failed(ex.Message)); } } [TypeFilter(typeof(CollaboratorFilter))] @@ -228,9 +217,7 @@ namespace CarCareTracker.Controllers { if (vehicleId == default) { - var response = new OperationResponse(); - response.Success = false; - response.Message = "Must provide a valid vehicle id"; + var response = OperationResponse.Failed("Must provide a valid vehicle id"); Response.StatusCode = 400; return Json(response); } @@ -243,23 +230,18 @@ namespace CarCareTracker.Controllers [Route("/api/vehicle/repairrecords/add")] public IActionResult AddRepairRecord(int vehicleId, GenericRecordExportModel input) { - var response = new OperationResponse(); if (vehicleId == default) { - response.Success = false; - response.Message = "Must provide a valid vehicle id"; Response.StatusCode = 400; - return Json(response); + return Json(OperationResponse.Failed("Must provide a valid vehicle id")); } if (string.IsNullOrWhiteSpace(input.Date) || string.IsNullOrWhiteSpace(input.Description) || string.IsNullOrWhiteSpace(input.Odometer) || string.IsNullOrWhiteSpace(input.Cost)) { - response.Success = false; - response.Message = "Input object invalid, Date, Description, Odometer, and Cost cannot be empty."; Response.StatusCode = 400; - return Json(response); + return Json(OperationResponse.Failed("Input object invalid, Date, Description, Odometer, and Cost cannot be empty.")); } try { @@ -287,16 +269,12 @@ namespace CarCareTracker.Controllers _odometerLogic.AutoInsertOdometerRecord(odometerRecord); } StaticHelper.NotifyAsync(_config.GetWebHookUrl(), vehicleId, User.Identity.Name, $"Added Repair Record via API - Description: {repairRecord.Description}"); - response.Success = true; - response.Message = "Repair Record Added"; - return Json(response); + return Json(OperationResponse.Succeed("Repair Record Added")); } catch (Exception ex) { - response.Success = false; - response.Message = ex.Message; Response.StatusCode = 500; - return Json(response); + return Json(OperationResponse.Failed(ex.Message)); } } [TypeFilter(typeof(CollaboratorFilter))] @@ -306,9 +284,7 @@ namespace CarCareTracker.Controllers { if (vehicleId == default) { - var response = new OperationResponse(); - response.Success = false; - response.Message = "Must provide a valid vehicle id"; + var response = OperationResponse.Failed("Must provide a valid vehicle id"); Response.StatusCode = 400; return Json(response); } @@ -321,23 +297,18 @@ namespace CarCareTracker.Controllers [Route("/api/vehicle/upgraderecords/add")] public IActionResult AddUpgradeRecord(int vehicleId, GenericRecordExportModel input) { - var response = new OperationResponse(); if (vehicleId == default) { - response.Success = false; - response.Message = "Must provide a valid vehicle id"; Response.StatusCode = 400; - return Json(response); + return Json(OperationResponse.Failed("Must provide a valid vehicle id")); } if (string.IsNullOrWhiteSpace(input.Date) || string.IsNullOrWhiteSpace(input.Description) || string.IsNullOrWhiteSpace(input.Odometer) || string.IsNullOrWhiteSpace(input.Cost)) { - response.Success = false; - response.Message = "Input object invalid, Date, Description, Odometer, and Cost cannot be empty."; Response.StatusCode = 400; - return Json(response); + return Json(OperationResponse.Failed("Input object invalid, Date, Description, Odometer, and Cost cannot be empty.")); } try { @@ -365,16 +336,12 @@ namespace CarCareTracker.Controllers _odometerLogic.AutoInsertOdometerRecord(odometerRecord); } StaticHelper.NotifyAsync(_config.GetWebHookUrl(), vehicleId, User.Identity.Name, $"Added Upgrade Record via API - Description: {upgradeRecord.Description}"); - response.Success = true; - response.Message = "Upgrade Record Added"; - return Json(response); + return Json(OperationResponse.Succeed("Upgrade Record Added")); } catch (Exception ex) { - response.Success = false; - response.Message = ex.Message; Response.StatusCode = 500; - return Json(response); + return Json(OperationResponse.Failed(ex.Message)); } } [TypeFilter(typeof(CollaboratorFilter))] @@ -384,9 +351,7 @@ namespace CarCareTracker.Controllers { if (vehicleId == default) { - var response = new OperationResponse(); - response.Success = false; - response.Message = "Must provide a valid vehicle id"; + var response = OperationResponse.Failed("Must provide a valid vehicle id"); Response.StatusCode = 400; return Json(response); } @@ -398,22 +363,17 @@ namespace CarCareTracker.Controllers [Route("/api/vehicle/taxrecords/add")] public IActionResult AddTaxRecord(int vehicleId, TaxRecordExportModel input) { - var response = new OperationResponse(); if (vehicleId == default) { - response.Success = false; - response.Message = "Must provide a valid vehicle id"; Response.StatusCode = 400; - return Json(response); + return Json(OperationResponse.Failed("Must provide a valid vehicle id")); } if (string.IsNullOrWhiteSpace(input.Date) || string.IsNullOrWhiteSpace(input.Description) || string.IsNullOrWhiteSpace(input.Cost)) { - response.Success = false; - response.Message = "Input object invalid, Date, Description, and Cost cannot be empty."; Response.StatusCode = 400; - return Json(response); + return Json(OperationResponse.Failed("Input object invalid, Date, Description, and Cost cannot be empty.")); } try { @@ -429,16 +389,12 @@ namespace CarCareTracker.Controllers }; _taxRecordDataAccess.SaveTaxRecordToVehicle(taxRecord); StaticHelper.NotifyAsync(_config.GetWebHookUrl(), vehicleId, User.Identity.Name, $"Added Tax Record via API - Description: {taxRecord.Description}"); - response.Success = true; - response.Message = "Tax Record Added"; - return Json(response); + return Json(OperationResponse.Succeed("Tax Record Added")); } catch (Exception ex) { - response.Success = false; - response.Message = ex.Message; Response.StatusCode = 500; - return Json(response); + return Json(OperationResponse.Failed(ex.Message)); } } [TypeFilter(typeof(CollaboratorFilter))] @@ -448,9 +404,7 @@ namespace CarCareTracker.Controllers { if (vehicleId == default) { - var response = new OperationResponse(); - response.Success = false; - response.Message = "Must provide a valid vehicle id"; + var response = OperationResponse.Failed("Must provide a valid vehicle id"); Response.StatusCode = 400; return Json(response); } @@ -464,9 +418,7 @@ namespace CarCareTracker.Controllers { if (vehicleId == default) { - var response = new OperationResponse(); - response.Success = false; - response.Message = "Must provide a valid vehicle id"; + var response = OperationResponse.Failed("Must provide a valid vehicle id"); Response.StatusCode = 400; return Json(response); } @@ -484,21 +436,16 @@ namespace CarCareTracker.Controllers [Route("/api/vehicle/odometerrecords/add")] public IActionResult AddOdometerRecord(int vehicleId, OdometerRecordExportModel input) { - var response = new OperationResponse(); if (vehicleId == default) { - response.Success = false; - response.Message = "Must provide a valid vehicle id"; Response.StatusCode = 400; - return Json(response); + return Json(OperationResponse.Failed("Must provide a valid vehicle id")); } if (string.IsNullOrWhiteSpace(input.Date) || string.IsNullOrWhiteSpace(input.Odometer)) { - response.Success = false; - response.Message = "Input object invalid, Date and Odometer cannot be empty."; Response.StatusCode = 400; - return Json(response); + return Json(OperationResponse.Failed("Input object invalid, Date and Odometer cannot be empty.")); } try { @@ -514,15 +461,11 @@ namespace CarCareTracker.Controllers }; _odometerRecordDataAccess.SaveOdometerRecordToVehicle(odometerRecord); StaticHelper.NotifyAsync(_config.GetWebHookUrl(), vehicleId, User.Identity.Name, $"Added Odometer Record via API - Mileage: {odometerRecord.Mileage.ToString()}"); - response.Success = true; - response.Message = "Odometer Record Added"; - return Json(response); + return Json(OperationResponse.Succeed("Odometer Record Added")); } catch (Exception ex) { - response.Success = false; - response.Message = ex.Message; Response.StatusCode = 500; - return Json(response); + return Json(OperationResponse.Failed(ex.Message)); } } [TypeFilter(typeof(CollaboratorFilter))] @@ -532,9 +475,7 @@ namespace CarCareTracker.Controllers { if (vehicleId == default) { - var response = new OperationResponse(); - response.Success = false; - response.Message = "Must provide a valid vehicle id"; + var response = OperationResponse.Failed("Must provide a valid vehicle id"); Response.StatusCode = 400; return Json(response); } @@ -558,13 +499,10 @@ namespace CarCareTracker.Controllers [Route("/api/vehicle/gasrecords/add")] public IActionResult AddGasRecord(int vehicleId, GasRecordExportModel input) { - var response = new OperationResponse(); if (vehicleId == default) { - response.Success = false; - response.Message = "Must provide a valid vehicle id"; Response.StatusCode = 400; - return Json(response); + return Json(OperationResponse.Failed("Must provide a valid vehicle id")); } if (string.IsNullOrWhiteSpace(input.Date) || string.IsNullOrWhiteSpace(input.Odometer) || @@ -574,10 +512,8 @@ namespace CarCareTracker.Controllers string.IsNullOrWhiteSpace(input.MissedFuelUp) ) { - response.Success = false; - response.Message = "Input object invalid, Date, Odometer, FuelConsumed, IsFillToFull, MissedFuelUp, and Cost cannot be empty."; Response.StatusCode = 400; - return Json(response); + return Json(OperationResponse.Failed("Input object invalid, Date, Odometer, FuelConsumed, IsFillToFull, MissedFuelUp, and Cost cannot be empty.")); } try { @@ -607,16 +543,12 @@ namespace CarCareTracker.Controllers _odometerLogic.AutoInsertOdometerRecord(odometerRecord); } StaticHelper.NotifyAsync(_config.GetWebHookUrl(), vehicleId, User.Identity.Name, $"Added Gas record via API - Mileage: {gasRecord.Mileage.ToString()}"); - response.Success = true; - response.Message = "Gas Record Added"; - return Json(response); + return Json(OperationResponse.Succeed("Gas Record Added")); } catch (Exception ex) { - response.Success = false; - response.Message = ex.Message; Response.StatusCode = 500; - return Json(response); + return Json(OperationResponse.Failed(ex.Message)); } } [TypeFilter(typeof(CollaboratorFilter))] @@ -626,11 +558,8 @@ namespace CarCareTracker.Controllers { if (vehicleId == default) { - var response = new OperationResponse(); - response.Success = false; - response.Message = "Must provide a valid vehicle id"; Response.StatusCode = 400; - return Json(response); + return Json(OperationResponse.Failed("Must provide a valid vehicle id")); } var currentMileage = _vehicleLogic.GetMaxMileage(vehicleId); var reminders = _reminderRecordDataAccess.GetReminderRecordsByVehicleId(vehicleId); @@ -678,17 +607,17 @@ namespace CarCareTracker.Controllers } if (!operationResponses.Any()) { - return Json(new OperationResponse { Success = false, Message = "No Emails Sent, No Vehicles Available or No Recipients Configured" }); + return Json(OperationResponse.Failed("No Emails Sent, No Vehicles Available or No Recipients Configured")); } else if (operationResponses.All(x => x.Success)) { - return Json(new OperationResponse { Success = true, Message = $"Emails Sent({operationResponses.Count()})" }); + return Json(OperationResponse.Succeed($"Emails Sent({operationResponses.Count()})")); } else if (operationResponses.All(x => !x.Success)) { - return Json(new OperationResponse { Success = false, Message = $"All Emails Failed({operationResponses.Count()}), Check SMTP Settings" }); + return Json(OperationResponse.Failed($"All Emails Failed({operationResponses.Count()}), Check SMTP Settings")); } else { - return Json(new OperationResponse { Success = true, Message = $"Emails Sent({operationResponses.Count(x => x.Success)}), Emails Failed({operationResponses.Count(x => !x.Success)}), Check Recipient Settings" }); + return Json(OperationResponse.Succeed($"Emails Sent({operationResponses.Count(x => x.Success)}), Emails Failed({operationResponses.Count(x => !x.Success)}), Check Recipient Settings")); } } [Authorize(Roles = nameof(UserData.IsRootUser))] diff --git a/Controllers/FilesController.cs b/Controllers/FilesController.cs index 902c2e6..3780bd0 100644 --- a/Controllers/FilesController.cs +++ b/Controllers/FilesController.cs @@ -41,7 +41,7 @@ namespace CarCareTracker.Controllers if (!string.IsNullOrWhiteSpace(uploadedFilePath)) { var result = _fileHelper.RenameFile(uploadedFilePath, originalFileName); - return Json(new OperationResponse { Success = result, Message = string.Empty }); + return Json(OperationResponse.Conditional(result)); } return Json(OperationResponse.Failed()); } diff --git a/Controllers/HomeController.cs b/Controllers/HomeController.cs index 1d2d807..de2b8f6 100644 --- a/Controllers/HomeController.cs +++ b/Controllers/HomeController.cs @@ -493,7 +493,7 @@ namespace CarCareTracker.Controllers } if (translationsDownloaded > 0) { - return Json(new OperationResponse() { Success = true, Message = $"{translationsDownloaded} Translations Downloaded" }); + return Json(OperationResponse.Succeed($"{translationsDownloaded} Translations Downloaded")); } else { return Json(OperationResponse.Failed("No Translations Downloaded")); diff --git a/Controllers/MigrationController.cs b/Controllers/MigrationController.cs index 31dda6f..5ee9dc8 100644 --- a/Controllers/MigrationController.cs +++ b/Controllers/MigrationController.cs @@ -419,7 +419,7 @@ namespace CarCareTracker.Controllers #endregion var destFilePath = $"{fullFolderPath}.zip"; ZipFile.CreateFromDirectory(fullFolderPath, destFilePath); - return Json(new OperationResponse { Success = true, Message = $"/{tempFolder}.zip" }); + return Json(OperationResponse.Succeed($"/{tempFolder}.zip")); } catch (Exception ex) { @@ -744,7 +744,7 @@ namespace CarCareTracker.Controllers } } #endregion - return Json(new OperationResponse { Success = true, Message = "Data Imported Successfully" }); + return Json(OperationResponse.Succeed("Data Imported Successfully")); } catch (Exception ex) { diff --git a/Controllers/Vehicle/PlanController.cs b/Controllers/Vehicle/PlanController.cs index 493c080..3fb3e67 100644 --- a/Controllers/Vehicle/PlanController.cs +++ b/Controllers/Vehicle/PlanController.cs @@ -51,7 +51,7 @@ namespace CarCareTracker.Controllers } planRecord.Files = planRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList(); var result = _planRecordTemplateDataAccess.SavePlanRecordTemplateToVehicle(planRecord); - return Json(new OperationResponse { Success = result, Message = result ? "Template Added" : StaticHelper.GenericErrorMessage }); + return Json(OperationResponse.Conditional(result, "Template Added", string.Empty)); } [TypeFilter(typeof(CollaboratorFilter))] [HttpGet] @@ -127,7 +127,7 @@ namespace CarCareTracker.Controllers } } var result = _planRecordDataAccess.SavePlanRecordToVehicle(existingRecord.ToPlanRecord()); - return Json(new OperationResponse { Success = result, Message = result ? "Plan Record Added" : StaticHelper.GenericErrorMessage }); + return Json(OperationResponse.Conditional(result, "Plan Record Added", string.Empty)); } [HttpGet] public IActionResult GetAddPlanRecordPartialView() diff --git a/Controllers/Vehicle/ReportController.cs b/Controllers/Vehicle/ReportController.cs index f138c41..adc09d9 100644 --- a/Controllers/Vehicle/ReportController.cs +++ b/Controllers/Vehicle/ReportController.cs @@ -313,7 +313,7 @@ namespace CarCareTracker.Controllers { return Json(OperationResponse.Failed()); } - return Json(new OperationResponse { Success = true, Message = result }); + return Json(OperationResponse.Succeed(result)); } else { diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index 5386559..0d33007 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -191,7 +191,7 @@ namespace CarCareTracker.Controllers return Json(OperationResponse.Failed("Both vehicles already have identical collaborators")); } } - return Json(new OperationResponse { Success = true, Message = "Collaborators Copied" }); + return Json(OperationResponse.Succeed("Collaborators Copied")); } catch (Exception ex) { diff --git a/Helper/MailHelper.cs b/Helper/MailHelper.cs index 0e7b770..472311d 100644 --- a/Helper/MailHelper.cs +++ b/Helper/MailHelper.cs @@ -41,7 +41,7 @@ namespace CarCareTracker.Helper var result = SendEmail(new List { emailAddress }, emailSubject, emailBody); if (result) { - return new OperationResponse { Success = true, Message = "Email Sent!" }; + return OperationResponse.Succeed("Email Sent!"); } else { return OperationResponse.Failed(); @@ -62,7 +62,7 @@ namespace CarCareTracker.Helper var result = SendEmail(new List { emailAddress }, emailSubject, emailBody); if (result) { - return new OperationResponse { Success = true, Message = "Email Sent!" }; + return OperationResponse.Succeed("Email Sent!"); } else { @@ -84,7 +84,7 @@ namespace CarCareTracker.Helper var result = SendEmail(new List { emailAddress}, emailSubject, emailBody); if (result) { - return new OperationResponse { Success = true, Message = "Email Sent!" }; + return OperationResponse.Succeed("Email Sent!"); } else { @@ -123,7 +123,7 @@ namespace CarCareTracker.Helper var result = SendEmail(emailAddresses, emailSubject, emailBody); if (result) { - return new OperationResponse { Success = true, Message = "Email Sent!" }; + return OperationResponse.Succeed("Email Sent!"); } else { return OperationResponse.Failed(); diff --git a/Helper/TranslationHelper.cs b/Helper/TranslationHelper.cs index a0767f5..daa01fc 100644 --- a/Helper/TranslationHelper.cs +++ b/Helper/TranslationHelper.cs @@ -159,7 +159,7 @@ namespace CarCareTracker.Helper //write to file File.WriteAllText(translationFilePath, JsonSerializer.Serialize(translations)); } - return new OperationResponse { Success = true, Message = "Translation Updated" }; + return OperationResponse.Succeed("Translation Updated"); } catch (Exception ex) { diff --git a/Logic/LoginLogic.cs b/Logic/LoginLogic.cs index 73be68e..7a71b55 100644 --- a/Logic/LoginLogic.cs +++ b/Logic/LoginLogic.cs @@ -107,7 +107,7 @@ namespace CarCareTracker.Logic //delete token _tokenData.DeleteToken(existingToken.Id); var result = _userData.SaveUserRecord(existingUser); - return new OperationResponse { Success = result, Message = result ? "User Updated" : StaticHelper.GenericErrorMessage }; + return OperationResponse.Conditional(result, "User Updated", string.Empty); } public OperationResponse RegisterOpenIdUser(LoginModel credentials) { @@ -141,7 +141,7 @@ namespace CarCareTracker.Logic var result = _userData.SaveUserRecord(newUser); if (result) { - return new OperationResponse { Success = true, Message = "You will be logged in briefly." }; + return OperationResponse.Succeed("You will be logged in briefly."); } else { @@ -183,7 +183,7 @@ namespace CarCareTracker.Logic var result = _userData.SaveUserRecord(newUser); if (result) { - return new OperationResponse { Success = true, Message = "You will be redirected to the login page briefly." }; + return OperationResponse.Succeed("You will be redirected to the login page briefly."); } else { @@ -205,7 +205,7 @@ namespace CarCareTracker.Logic } //for security purposes we want to always return true for this method. //otherwise someone can spam the reset password method to sniff out users. - return new OperationResponse { Success = true, Message = "If your user exists in the system you should receive an email shortly with instructions on how to proceed." }; + return OperationResponse.Succeed("If your user exists in the system you should receive an email shortly with instructions on how to proceed."); } public OperationResponse ResetPasswordByUser(LoginModel credentials) { @@ -230,7 +230,7 @@ namespace CarCareTracker.Logic _tokenData.DeleteToken(existingToken.Id); if (result) { - return new OperationResponse { Success = true, Message = "Password resetted, you will be redirected to login page shortly." }; + return OperationResponse.Succeed("Password resetted, you will be redirected to login page shortly."); } else { return OperationResponse.Failed(); @@ -328,7 +328,7 @@ namespace CarCareTracker.Logic } if (result) { - return new OperationResponse { Success = true, Message = "Token Generated!" }; + return OperationResponse.Succeed("Token Generated!"); } else { @@ -358,7 +358,7 @@ namespace CarCareTracker.Logic var result = _userData.SaveUserRecord(existingUser); if (result) { - return new OperationResponse { Success = true, Message = newPassword }; + return OperationResponse.Succeed(newPassword); } else { diff --git a/Models/OperationResponse.cs b/Models/OperationResponse.cs index b74cc75..162b7fa 100644 --- a/Models/OperationResponse.cs +++ b/Models/OperationResponse.cs @@ -9,7 +9,7 @@ namespace CarCareTracker.Models } public class OperationResponse: OperationResponseBase { - public static OperationResponse Succeed(string message) + public static OperationResponse Succeed(string message = "") { return new OperationResponse { Success = true, Message = message }; } @@ -21,5 +21,13 @@ namespace CarCareTracker.Models } return new OperationResponse { Success = false, Message = message}; } + public static OperationResponse Conditional(bool result, string successMessage = "", string errorMessage = "") + { + if (string.IsNullOrWhiteSpace(errorMessage)) + { + errorMessage = StaticHelper.GenericErrorMessage; + } + return new OperationResponse { Success = result, Message = result ? successMessage : errorMessage }; + } } }