working with dummy db
This commit is contained in:
parent
9e61c50958
commit
61484bff16
|
@ -1,10 +1,12 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
using BlueWest.Collections;
|
||||
using BlueWest.Data;
|
||||
using BlueWest.WebApi.MySQL;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using PerformanceSolution.Data;
|
||||
|
||||
namespace BlueWest.WebApi.Controllers
|
||||
{
|
||||
|
@ -12,29 +14,33 @@ namespace BlueWest.WebApi.Controllers
|
|||
[Route("[controller]")]
|
||||
public class UserController : ControllerBase
|
||||
{
|
||||
private UserList _userList => MemoryData.UserList;
|
||||
|
||||
private readonly MysqlDbContext _dbContext;
|
||||
|
||||
public UserController(MysqlDbContext dbContext)
|
||||
{
|
||||
_dbContext = dbContext;
|
||||
}
|
||||
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[HttpGet]
|
||||
public ActionResult Get()
|
||||
{
|
||||
if (_userList != null)
|
||||
{
|
||||
return Ok(_userList.Users.Values.ToImmutableArray());
|
||||
}
|
||||
var users = _dbContext.Users.ToImmutableArray();
|
||||
|
||||
return Ok(users);
|
||||
|
||||
return new NotFoundResult();
|
||||
}
|
||||
|
||||
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
[HttpGet("{userId}", Name = nameof(GetUserById))]
|
||||
public ActionResult GetUserById(int userId)
|
||||
public ActionResult GetUserById(TimeSpan userId)
|
||||
{
|
||||
var user = MemoryData.GetUserById(userId);
|
||||
var user = _dbContext.Users.FirstOrDefault(x => x.Id == userId);
|
||||
|
||||
if (user.Id != TimeSpan.Zero)
|
||||
if (user != null)
|
||||
{
|
||||
return Ok(user);
|
||||
}
|
||||
|
@ -48,8 +54,7 @@ namespace BlueWest.WebApi.Controllers
|
|||
[HttpGet("{userId}/transactions")]
|
||||
public ActionResult GetTransactions(int userId)
|
||||
{
|
||||
var transactions = MemoryData.GetUserTransactions(userId);
|
||||
return Ok(transactions);
|
||||
return Ok();
|
||||
}
|
||||
|
||||
|
||||
|
@ -58,28 +63,17 @@ namespace BlueWest.WebApi.Controllers
|
|||
[HttpGet("{userId}/transactions/{transactionId}")]
|
||||
public ActionResult GetTransactionsById(int userId, TimeSpan transactionId)
|
||||
{
|
||||
var user = MemoryData.UserList.GetUserById(userId);
|
||||
|
||||
if(user.Id == TimeSpan.Zero) return new NotFoundResult();
|
||||
|
||||
var transactions = user.FinanceTransactions;
|
||||
|
||||
FinanceTransaction? transaction = transactions?.Values.ToImmutableArray().FirstOrNull(t => t.CreationDate == transactionId);
|
||||
|
||||
if (transaction != null)
|
||||
{
|
||||
return Ok(transaction);
|
||||
}
|
||||
|
||||
return new NotFoundResult();
|
||||
}
|
||||
|
||||
|
||||
[ProducesResponseType(StatusCodes.Status201Created)]
|
||||
[HttpPost]
|
||||
public ActionResult AddOrModifyUser(UserUpdateDto userUpdateDto)
|
||||
public ActionResult AddUser(UserUpdateDto userUpdateDto)
|
||||
{
|
||||
var user = MemoryData.AddOrModifyUser(userUpdateDto);
|
||||
var user = new User(userUpdateDto, DateTime.Now.TimeOfDay, new List<FinanceTransaction>());
|
||||
_dbContext.Users.Add(user);
|
||||
_dbContext.SaveChanges();
|
||||
return CreatedAtRoute(nameof(GetUserById), new {userId = user.Id}, user);
|
||||
}
|
||||
|
||||
|
@ -88,26 +82,23 @@ namespace BlueWest.WebApi.Controllers
|
|||
[HttpPut("{userId}")]
|
||||
public ActionResult UpdateUser(int userId, UserUpdateDto userUpdate)
|
||||
{
|
||||
var result = MemoryData.UserList.UpdateUser(userId, userUpdate);
|
||||
|
||||
if (result != null) return Ok(result);
|
||||
|
||||
return BadRequest();
|
||||
return new NotFoundResult();
|
||||
}
|
||||
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[HttpDelete("{id}")]
|
||||
public ActionResult DeleteUser(int id)
|
||||
public ActionResult DeleteUser(TimeSpan id)
|
||||
{
|
||||
bool result = MemoryData.UserList.RemoveUser(id);
|
||||
|
||||
if (result)
|
||||
var user = _dbContext.Users.FirstOrDefault(u => u.Id == id);
|
||||
if (user == null)
|
||||
{
|
||||
return NoContent();
|
||||
return new NotFoundResult();
|
||||
}
|
||||
|
||||
return new BadRequestResult();
|
||||
_dbContext.Users.Remove(user);
|
||||
_dbContext.SaveChanges();
|
||||
return Ok();
|
||||
}
|
||||
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
|
@ -115,10 +106,6 @@ namespace BlueWest.WebApi.Controllers
|
|||
[HttpPost("{userId}/transactions")]
|
||||
public ActionResult PostTransaction(int userId, FinanceTransactionInsertDto financeTransaction)
|
||||
{
|
||||
FinanceTransaction result = MemoryData.UserList.AddFinanceTransaction(userId, financeTransaction);
|
||||
|
||||
if(result.UserId != TimeSpan.Zero) return Ok(result);
|
||||
|
||||
return new BadRequestResult();
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using BlueWest.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace BlueWest.WebApi.MySQL;
|
||||
|
||||
public sealed class MysqlDbContext : DbContext
|
||||
{
|
||||
public DbSet<User> Users { get; set; }
|
||||
public DbSet<FinanceTransaction> Transactions { get; set; }
|
||||
public IConfiguration Configuration;
|
||||
|
||||
|
||||
public MysqlDbContext(DbContextOptions<MysqlDbContext> options) : base(options)
|
||||
{
|
||||
Database.EnsureCreated();
|
||||
|
||||
}
|
||||
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
{
|
||||
/*optionsBuilder.UseMySql(
|
||||
Configuration.GetConnectionString("LocalMySQL"),
|
||||
new MySqlServerVersion(new Version(8, 0, 11))
|
||||
);*/
|
||||
}
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
base.OnModelCreating(modelBuilder);
|
||||
modelBuilder.Entity<User>(builder =>
|
||||
{
|
||||
builder.HasKey(x => x.Id);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<FinanceTransaction>(builder =>
|
||||
{
|
||||
builder.HasOne<User>()
|
||||
.WithMany(x => x.FinanceTransactions)
|
||||
.HasForeignKey(x => x.UserId);
|
||||
});
|
||||
|
||||
}
|
||||
}
|
|
@ -10,8 +10,10 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using BlueWest.WebApi.MySQL;
|
||||
using BlueWest.WebApi.Service;
|
||||
using BlueWest.WebApi.Tools;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.OpenApi.Models;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
|
@ -57,7 +59,8 @@ namespace BlueWest.WebApi
|
|||
Version = "v1"
|
||||
});
|
||||
});
|
||||
|
||||
services.AddDbContextPool<MysqlDbContext>(options =>
|
||||
options.UseMySql(Configuration.GetConnectionString("LocalMySQL"), new MySqlServerVersion(new Version(8, 0, 11))));
|
||||
services.AddGrpc();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
using System;
|
||||
|
||||
namespace BlueWest.WebApi
|
||||
{
|
||||
public class WeatherForecast
|
||||
{
|
||||
public DateTime Date { get; set; }
|
||||
|
||||
public int TemperatureC { get; set; }
|
||||
|
||||
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
|
||||
|
||||
public string Summary { get; set; }
|
||||
}
|
||||
}
|
|
@ -6,5 +6,8 @@
|
|||
"Microsoft.Hosting.Lifetime": "Information"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
"AllowedHosts": "*",
|
||||
"ConnectionStrings": {
|
||||
"LocalMySQL": "server=127.0.0.1;user=blueuser;password=JwuWxhWxhh$X1;database=bluedb;"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,10 +23,24 @@ namespace BlueWest.Collections
|
|||
return null;
|
||||
}
|
||||
|
||||
public static TSource? FirstOrNull<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) where TSource : struct =>
|
||||
source.TryGetFirst(predicate);
|
||||
public static TSource FirstOrNullRef<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) where TSource : class =>
|
||||
source.TryGetFirstClass(predicate);
|
||||
|
||||
private static TSource? TryGetFirst<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) where TSource : struct
|
||||
public static TSource? FirstOrNullStruct<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) where TSource : struct =>
|
||||
source.TryGetFirstStruct(predicate);
|
||||
|
||||
private static TSource? TryGetFirstStruct<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) where TSource : struct
|
||||
{
|
||||
foreach (TSource obj in source)
|
||||
{
|
||||
if (predicate(obj))
|
||||
{
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
private static TSource TryGetFirstClass<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) where TSource : class
|
||||
{
|
||||
foreach (TSource obj in source)
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
|
||||
<RootNamespace>BlueWest.Data</RootNamespace>
|
||||
<AnalysisLevel>preview</AnalysisLevel>
|
||||
|
@ -9,7 +9,6 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MessagePack" Version="2.3.85" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="6.0.4" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
using Newtonsoft.Json;
|
||||
|
||||
namespace BlueWest.Data
|
||||
{
|
||||
public class DataObject
|
||||
{
|
||||
public override string ToString()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this, Formatting.Indented);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,24 +1,27 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using MapTo;
|
||||
using MessagePack;
|
||||
|
||||
namespace BlueWest.Data
|
||||
{
|
||||
|
||||
[MessagePackObject]
|
||||
[MapFrom(typeof(FinanceTransactionInsertDto))]
|
||||
public partial struct FinanceTransaction
|
||||
public partial class FinanceTransaction
|
||||
{
|
||||
[Key(1)] public TimeSpan CreationDate { get; set; }
|
||||
[Key(2)] public TimeSpan UserId { get; set; }
|
||||
[Key] public TimeSpan CreationDate { get; set; }
|
||||
public TimeSpan UserId { get; set; }
|
||||
|
||||
[Key(4)] public string Currency { get; }
|
||||
[Key(5)] public double Amount { get; } // To Buy
|
||||
[Key(6)] public double Quantity { get; } // Bought
|
||||
[Key(7)] public double Fee { get; }
|
||||
[Key(8)] public TimeSpan UploadedDate { get; }
|
||||
[Key(9)] public TimeSpan TransactionDate { get; }
|
||||
public string Currency { get; }
|
||||
public double Amount { get; } // To Buy
|
||||
public double Quantity { get; } // Bought
|
||||
public double Fee { get; }
|
||||
public TimeSpan UploadedDate { get; }
|
||||
public TimeSpan TransactionDate { get; }
|
||||
|
||||
public FinanceTransaction()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public FinanceTransaction(TimeSpan creationDate, TimeSpan userId,
|
||||
string currency, double amount, double quantity, double fee, TimeSpan uploadedDate, TimeSpan transactionDate)
|
||||
|
|
|
@ -7,7 +7,7 @@ namespace BlueWest.Data
|
|||
{
|
||||
[MapFrom(typeof(FinanceTransaction))]
|
||||
|
||||
public partial struct FinanceTransactionInsertDto
|
||||
public partial class FinanceTransactionInsertDto
|
||||
{
|
||||
public string Currency { get; }
|
||||
public double Amount { get; } // To Buy
|
||||
|
|
|
@ -7,7 +7,7 @@ namespace BlueWest.Data
|
|||
{
|
||||
[MapFrom(typeof(FinanceTransaction))]
|
||||
|
||||
public partial struct FinanceTransactionReadDto
|
||||
public partial class FinanceTransactionReadDto
|
||||
{
|
||||
public TimeSpan CreationDate { get; set; }
|
||||
public TimeSpan UserId { get; set; }
|
||||
|
|
|
@ -4,28 +4,24 @@ using System.Collections.Generic;
|
|||
using System.Transactions;
|
||||
using BlueWest.Collections;
|
||||
using MapTo;
|
||||
using MessagePack;
|
||||
using Newtonsoft.Json;
|
||||
using BlueWest.Collections;
|
||||
|
||||
namespace BlueWest.Data
|
||||
{
|
||||
[MessagePackObject]
|
||||
[UseUpdate]
|
||||
[MapFrom(typeof(UserUpdateDto))]
|
||||
public partial class User
|
||||
{
|
||||
[Key(1)] public TimeSpan Id { get; } = TimeSpan.Zero;
|
||||
[Key(2)] public string Name { get; set; }
|
||||
public TimeSpan Id { get; } = TimeSpan.Zero;
|
||||
public string Name { get; set; }
|
||||
|
||||
public List<FinanceTransaction> FinanceTransactions { get; }
|
||||
|
||||
|
||||
[Key(8)] public FastDictionary<int, FinanceTransaction> FinanceTransactions { get; }
|
||||
|
||||
public User(TimeSpan id, string name, FastDictionary<int, FinanceTransaction> financeTransactions)
|
||||
public User(TimeSpan id, string name)
|
||||
{
|
||||
Id = id;
|
||||
Name = name;
|
||||
FinanceTransactions = financeTransactions;
|
||||
}
|
||||
|
||||
public User()
|
||||
|
@ -33,25 +29,6 @@ namespace BlueWest.Data
|
|||
|
||||
}
|
||||
|
||||
public void AddTransaction(FinanceTransaction financeTransaction)
|
||||
{
|
||||
FinanceTransactions.Add(FinanceTransactions.Count + 1, financeTransaction);
|
||||
}
|
||||
public void AddTransaction(FinanceTransactionInsertDto financeTransaction)
|
||||
{
|
||||
FinanceTransactions.Add(FinanceTransactions.Count + 1,
|
||||
new FinanceTransaction(financeTransaction, TimeSpan.FromTicks(DateTime.Now.Ticks), Id));
|
||||
}
|
||||
|
||||
internal bool HasTransaction(int transactionId)
|
||||
{
|
||||
return FinanceTransactions.Contains(transactionId);
|
||||
}
|
||||
|
||||
internal FinanceTransaction GetTransactionById(int transactionId)
|
||||
{
|
||||
return FinanceTransactions[transactionId];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,9 +6,6 @@ namespace BlueWest.Data
|
|||
{
|
||||
public static class UserExtensions
|
||||
{
|
||||
public static bool UserHasTransaction(this User user, int transactionId)
|
||||
{
|
||||
return user.FinanceTransactions.Contains(transactionId);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,125 +1 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Transactions;
|
||||
using BlueWest.Collections;
|
||||
using MessagePack;
|
||||
|
||||
namespace BlueWest.Data
|
||||
{
|
||||
[MessagePackObject]
|
||||
public class UserList: DataObject
|
||||
{
|
||||
[Key(9)] public readonly FastDictionary<int, User> Users;
|
||||
|
||||
[IgnoreMember] public int Length = 0;
|
||||
|
||||
public UserList(FastDictionary<int, User> users)
|
||||
{
|
||||
Users = users;
|
||||
}
|
||||
|
||||
private int GetIndexById(int userId)
|
||||
{
|
||||
var keys = Users.Keys;
|
||||
|
||||
foreach (var key in keys)
|
||||
{
|
||||
if (key == userId) return key;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
public User GetUserById(int id)
|
||||
{
|
||||
if (Users.ContainsKey(id)) return Users[id];
|
||||
return new User();
|
||||
}
|
||||
|
||||
public bool RemoveUser(int userId)
|
||||
{
|
||||
if (Users.ContainsKey(userId))
|
||||
{
|
||||
Users.Remove(userId);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
internal bool HasUser(int userId)
|
||||
{
|
||||
return Users.Contains(userId);
|
||||
}
|
||||
|
||||
public User UpdateUser(int userId, UserUpdateDto userUpdate)
|
||||
{
|
||||
if (Users.ContainsKey(userId))
|
||||
{
|
||||
Users[userId].Update(userUpdate);
|
||||
return Users[userId];
|
||||
}
|
||||
|
||||
return new User();
|
||||
}
|
||||
|
||||
|
||||
internal bool UserHasTransaction(int userId, int transactionId) => HasUser(userId) && Users[userId].FinanceTransactions.Contains(transactionId);
|
||||
|
||||
public FinanceTransaction GetTransactionById(int userId, int transactionId)
|
||||
{
|
||||
if(!HasUser(userId)) return new FinanceTransaction();
|
||||
|
||||
if (UserHasTransaction(userId, transactionId)) return Users[userId].FinanceTransactions[transactionId];
|
||||
|
||||
return new FinanceTransaction();
|
||||
}
|
||||
|
||||
public User AddUser(int userId, UserUpdateDto userUpdateDto)
|
||||
{
|
||||
if (Users.ContainsKey(userId))
|
||||
{
|
||||
Users[userId].Update(userUpdateDto);
|
||||
return Users[userId];
|
||||
}
|
||||
|
||||
var id = userId != -1 ? userId : Length + 1;
|
||||
|
||||
var newUser = new User(userUpdateDto, DateTime.Now.TimeOfDay, new FastDictionary<int, FinanceTransaction>());
|
||||
|
||||
Users.Add(Length, newUser);
|
||||
|
||||
Length++;
|
||||
|
||||
return newUser;
|
||||
}
|
||||
|
||||
const string NoIdError = "No transaction was found with the specified id";
|
||||
|
||||
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 financeTransaction;
|
||||
}
|
||||
|
||||
return new FinanceTransaction();
|
||||
}
|
||||
|
||||
|
||||
public ImmutableArray<FinanceTransaction> GetUserTransactions(int userId)
|
||||
{
|
||||
if (Users.ContainsKey(userId))
|
||||
{
|
||||
return Users[userId].FinanceTransactions.Values.ToImmutableArray();
|
||||
}
|
||||
|
||||
return new ImmutableArray<FinanceTransaction>();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -11,8 +11,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlueWest.Api", "BlueWest.Ap
|
|||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlueWest.Collections", "BlueWest.Collections\BlueWest.Collections.csproj", "{F55019A2-E2A8-4AF1-8FBC-FA99476A1B1C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlueWest.GrpcClient", "BlueWest.GrpcClient\BlueWest.GrpcClient.csproj", "{65A6A17A-EFFB-4750-8B80-3B0690CCA59F}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlueWest.MapTo", "include\MapTo\src\BlueWest.MapTo\BlueWest.MapTo.csproj", "{72B37540-A12F-466E-A58F-7BA2B247CB74}"
|
||||
EndProject
|
||||
Global
|
||||
|
@ -37,10 +35,6 @@ Global
|
|||
{F55019A2-E2A8-4AF1-8FBC-FA99476A1B1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F55019A2-E2A8-4AF1-8FBC-FA99476A1B1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F55019A2-E2A8-4AF1-8FBC-FA99476A1B1C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{65A6A17A-EFFB-4750-8B80-3B0690CCA59F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{65A6A17A-EFFB-4750-8B80-3B0690CCA59F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{65A6A17A-EFFB-4750-8B80-3B0690CCA59F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{65A6A17A-EFFB-4750-8B80-3B0690CCA59F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{72B37540-A12F-466E-A58F-7BA2B247CB74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{72B37540-A12F-466E-A58F-7BA2B247CB74}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{72B37540-A12F-466E-A58F-7BA2B247CB74}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
using System;
|
||||
using BlueWest.Core.ComponentSystem;
|
||||
using BlueWest.Tools;
|
||||
using PerformanceSolution.Data;
|
||||
|
||||
namespace PerformanceSolution.Artefacts
|
||||
{
|
||||
|
@ -38,22 +37,22 @@ namespace PerformanceSolution.Artefacts
|
|||
|
||||
private void GetAllUsersInConsole()
|
||||
{
|
||||
var data = MemoryData.UserList;
|
||||
/*var data = MemoryData.UserList;
|
||||
if (data != null)
|
||||
{
|
||||
Console.WriteLine(MemoryData.UserList.ToString());
|
||||
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
private void GetUserByIdInConsole(int id)
|
||||
{
|
||||
var user = MemoryData.GetUserById(id);
|
||||
/*var user = MemoryData.GetUserById(id);
|
||||
if (user != null)
|
||||
{
|
||||
Console.WriteLine(user.ToString());
|
||||
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
public void OnEvent(CommandRequestEvent commandRequestEvent)
|
||||
|
|
|
@ -1,78 +1 @@
|
|||
using System;
|
||||
using System.Collections.Immutable;
|
||||
using BlueWest.Collections;
|
||||
using BlueWest.Data;
|
||||
using PerformanceSolution.Tools;
|
||||
|
||||
namespace PerformanceSolution.Data
|
||||
{
|
||||
public static class MemoryData
|
||||
{
|
||||
public static UserList UserList = new UserList(new FastDictionary<int, User>());
|
||||
|
||||
private const string SavePathName = "userData";
|
||||
|
||||
public static TimeSpan DateKey = new TimeSpan(2386, 0,0,0,0 );
|
||||
|
||||
private static bool DEBUG = true;
|
||||
|
||||
static MemoryData()
|
||||
{
|
||||
if (DEBUG)
|
||||
{
|
||||
UserList = GenerateMockData();
|
||||
//SaveUserList();
|
||||
}
|
||||
|
||||
//LoadUsers();
|
||||
}
|
||||
|
||||
public static void SaveUserList(UserList userList)
|
||||
{
|
||||
//UserList = userList;
|
||||
//SaveLoadManager.Save(UserList, SavePathName);
|
||||
}
|
||||
|
||||
public static void LoadUsers()
|
||||
{
|
||||
UserList = SaveLoadManager.Load<UserList>(SavePathName);
|
||||
UserList ??= new UserList(new FastDictionary<int, User>());
|
||||
}
|
||||
|
||||
public static FinanceTransaction GetTransactionById(int userId, int transactionId) => UserList.GetTransactionById(userId, transactionId);
|
||||
|
||||
private static void SaveUserList() => SaveUserList(UserList);
|
||||
|
||||
public static User AddOrModifyUser(UserUpdateDto userUpdateDto, int userId = -1)
|
||||
{
|
||||
return UserList.AddUser(userId, userUpdateDto);
|
||||
}
|
||||
|
||||
private static UserList GenerateMockData()
|
||||
{
|
||||
|
||||
|
||||
var transactions = new FastDictionary<int, FinanceTransaction>();
|
||||
|
||||
var u = new User(DateTime.Now.TimeOfDay, "Benny", transactions);
|
||||
var list = new FastDictionary<int, User>(10);
|
||||
var financeTransaction = new FinanceTransaction(TimeSpan.FromTicks(DateTime.Now.Ticks), u.Id, "", 0.00, 0.00, 0.00,
|
||||
TimeSpan.FromTicks(DateTime.Now.Ticks), TimeSpan.FromTicks(DateTime.Now.Ticks));
|
||||
transactions.Add(1, financeTransaction);
|
||||
|
||||
list.Add(0, u);
|
||||
|
||||
return new UserList(list);
|
||||
}
|
||||
|
||||
public static User GetUserById(int userId)
|
||||
{
|
||||
return UserList.GetUserById(userId);
|
||||
}
|
||||
|
||||
public static ImmutableArray<FinanceTransaction> GetUserTransactions(int userId)
|
||||
{
|
||||
return UserList.GetUserTransactions(userId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue