diff --git a/BlueWest.Data/BlueWest.Data.csproj b/BlueWest.Data/BlueWest.Data.csproj index ef18cfb..89effba 100644 --- a/BlueWest.Data/BlueWest.Data.csproj +++ b/BlueWest.Data/BlueWest.Data.csproj @@ -13,7 +13,7 @@ - + diff --git a/BlueWest.Data/DataQueryResult.cs b/BlueWest.Data/DataQueryResult.cs deleted file mode 100644 index b9ecc04..0000000 --- a/BlueWest.Data/DataQueryResult.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace BlueWest.Data -{ - public sealed class DataQueryResult - { - public readonly T Value; - public bool HasValue; - public string Message; - - public DataQueryResult(T value, bool success = true, string message = "") - { - Value = value; - HasValue = success; - Message = message; - } - } - internal sealed class DataQueryResult - { - public readonly object Value; - public bool HasValue; - public string Message; - - public DataQueryResult(object value, bool success = true, string message = "") - { - Value = value; - HasValue = success; - Message = message; - } - } - - -} diff --git a/BlueWest.Data/User/User.cs b/BlueWest.Data/User/User.cs index 57b3d7f..2f8fc67 100644 --- a/BlueWest.Data/User/User.cs +++ b/BlueWest.Data/User/User.cs @@ -13,9 +13,9 @@ namespace BlueWest.Data [MessagePackObject] [UseUpdate] [MapFrom(typeof(UserUpdateDto))] - public partial class User + public partial class User { - [Key(1)] public TimeSpan Id { get; } + [Key(1)] public TimeSpan Id { get; } = TimeSpan.Zero; [Key(2)] public string Name { get; set; } @@ -28,6 +28,11 @@ namespace BlueWest.Data FinanceTransactions = financeTransactions; } + public User() + { + + } + public void AddTransaction(FinanceTransaction financeTransaction) { FinanceTransactions.Add(FinanceTransactions.Count + 1, financeTransaction); diff --git a/BlueWest.Data/UserList.cs b/BlueWest.Data/UserList.cs index 3ecc55d..7050ae4 100644 --- a/BlueWest.Data/UserList.cs +++ b/BlueWest.Data/UserList.cs @@ -31,10 +31,10 @@ namespace BlueWest.Data return -1; } - public DataQueryResult GetUserById(int id) + public User GetUserById(int id) { - if (Users.ContainsKey(id)) return new DataQueryResult(Users[id], true); - return new DataQueryResult(null, false, "Can't find a user with the provided id."); + if (Users.ContainsKey(id)) return Users[id]; + return new User(); } public bool RemoveUser(int userId) @@ -53,27 +53,27 @@ namespace BlueWest.Data return Users.Contains(userId); } - public DataQueryResult UpdateUser(int userId, UserUpdateDto userUpdate) + public User UpdateUser(int userId, UserUpdateDto userUpdate) { if (Users.ContainsKey(userId)) { Users[userId].Update(userUpdate); - return new DataQueryResult(Users[userId], true); + return Users[userId]; } - return new DataQueryResult(null, false); + return new User(); } internal bool UserHasTransaction(int userId, int transactionId) => HasUser(userId) && Users[userId].FinanceTransactions.Contains(transactionId); - public DataQueryResult GetTransactionById(int userId, int transactionId) + public FinanceTransaction GetTransactionById(int userId, int transactionId) { - if(!HasUser(userId)) return new DataQueryResult(new FinanceTransaction(), false, "Can't find a user with the provided id."); + if(!HasUser(userId)) return new FinanceTransaction(); - if (UserHasTransaction(userId, transactionId)) return new DataQueryResult(Users[userId].FinanceTransactions[transactionId]); + if (UserHasTransaction(userId, transactionId)) return Users[userId].FinanceTransactions[transactionId]; - return new DataQueryResult(new FinanceTransaction(), false, "Can't find a transaction with the provided id."); + return new FinanceTransaction(); } public User AddUser(int userId, UserUpdateDto userUpdateDto) @@ -97,18 +97,17 @@ namespace BlueWest.Data const string NoIdError = "No transaction was found with the specified id"; - public DataQueryResult AddFinanceTransaction(int userId, FinanceTransactionInsertDto financeTransactionDto) + public FinanceTransaction AddFinanceTransaction(int userId, FinanceTransactionInsertDto financeTransactionDto) { if (Users.ContainsKey(userId)) { var now = TimeSpan.FromTicks(DateTime.Now.Ticks); var financeTransaction = new FinanceTransaction(financeTransactionDto, now, Users[userId].Id); Users[userId].AddTransaction(financeTransaction); - return new DataQueryResult(financeTransaction); + return financeTransaction; } - return new DataQueryResult(new FinanceTransaction(), false, - "no transaction with the provided id"); + return new FinanceTransaction(); } diff --git a/BlueWest.WebApi/Controllers/UserController.cs b/BlueWest.WebApi/Controllers/UserController.cs index aafc23b..693f89d 100644 --- a/BlueWest.WebApi/Controllers/UserController.cs +++ b/BlueWest.WebApi/Controllers/UserController.cs @@ -33,12 +33,11 @@ namespace BlueWest.WebApi.Controllers [HttpGet("{userId}", Name = nameof(GetUserById))] public ActionResult GetUserById(int userId) { - DataQueryResult user = MemoryData.GetUserById(userId); + var user = MemoryData.GetUserById(userId); - if (user.HasValue) + if (user.Id != TimeSpan.Zero) { - return Ok(user.Value); - + return Ok(user); } return new NotFoundResult(); @@ -62,9 +61,9 @@ namespace BlueWest.WebApi.Controllers { var user = MemoryData.UserList.GetUserById(userId); - if(!user.HasValue) return new NotFoundResult(); + if(user.Id == TimeSpan.Zero) return new NotFoundResult(); - var transactions = user?.Value.FinanceTransactions; + var transactions = user.FinanceTransactions; FinanceTransaction? transaction = transactions?.Values.ToImmutableArray().FirstOrNull(t => t.CreationDate == transactionId); @@ -117,9 +116,9 @@ namespace BlueWest.WebApi.Controllers [HttpPost("{userId}/transactions")] public ActionResult PostTransaction(int userId, FinanceTransactionInsertDto financeTransaction) { - DataQueryResult result = MemoryData.UserList.AddFinanceTransaction(userId, financeTransaction); + FinanceTransaction result = MemoryData.UserList.AddFinanceTransaction(userId, financeTransaction); - if(result.HasValue) return Ok(result.Value); + if(result.UserId != TimeSpan.Zero) return Ok(result); return new BadRequestResult(); } diff --git a/BlueWest/Data/MemoryData.cs b/BlueWest/Data/MemoryData.cs index 59a166c..1aef72c 100644 --- a/BlueWest/Data/MemoryData.cs +++ b/BlueWest/Data/MemoryData.cs @@ -39,7 +39,7 @@ namespace PerformanceSolution.Data UserList ??= new UserList(new FastDictionary()); } - public static DataQueryResult GetTransactionById(int userId, int transactionId) => UserList.GetTransactionById(userId, transactionId); + public static FinanceTransaction GetTransactionById(int userId, int transactionId) => UserList.GetTransactionById(userId, transactionId); private static void SaveUserList() => SaveUserList(UserList); @@ -67,7 +67,7 @@ namespace PerformanceSolution.Data return new UserList(list); } - public static DataQueryResult GetUserById(int userId) + public static User GetUserById(int userId) { return UserList.GetUserById(userId); }