This commit is contained in:
2023-06-21 17:56:00 +03:00
parent fa8852a32a
commit e9d4053e65
55 changed files with 3883 additions and 262 deletions
+41 -10
View File
@@ -41,30 +41,58 @@ public class CurrencyService
);
}
public Exec<Currency, AddCurrencyStatus> AddCurrency(Guid userId, Currency currency)
public Exec<Currency, CurrencyAddStatus> CurrencyAdd(Guid userId, Currency currency)
{
if (currency == null)
throw new ArgumentNullException(nameof(currency));
var result = new Exec<Currency, AddCurrencyStatus>(AddCurrencyStatus.success);
var result = new Exec<Currency, CurrencyAddStatus>(CurrencyAddStatus.success);
var exists = _currencyRepository.GetByGlobalCurrency(userId, currency.CurrencyGlobalId);
if (exists != null)
{
return result.Set(exists, AddCurrencyStatus.exists);
return result.Set(exists, CurrencyAddStatus.exists);
}
currency.Id = Guid.NewGuid();
currency.UserId = userId;
if (!_currencyRepository.Add(currency))
{
return result.Set(AddCurrencyStatus.failed);
return result.Set(CurrencyAddStatus.failed);
}
return result.Set(currency);
}
public Exec<CurrencyRate, CurrencyAddRateStatus> AddCurrencyRate(Guid userId, Guid currencyId, CurrencyRate currencyRate)
public Exec<Currency, CurrencyEditStatus> CurrencyUpdate(
Guid userId,
Guid currencyId,
CurrencyEdit currency
)
{
if (currency == null)
throw new ArgumentNullException(nameof(currency));
var result = new Exec<Currency, CurrencyEditStatus>(CurrencyEditStatus.success);
var exists = _currencyRepository.Get(userId, currencyId);
if (exists == null)
{
return result.Set(CurrencyEditStatus.not_found);
}
exists.Name = currency.Name;
exists.ShortName = currency.ShortName;
if (!_currencyRepository.Update(exists))
{
return result.Set(CurrencyEditStatus.failed);
}
return result.Set(exists);
}
public Exec<CurrencyRate, CurrencyAddRateStatus> CurrencyRateAdd(Guid userId, Guid currencyId, CurrencyRate currencyRate)
{
if (currencyRate == null)
throw new ArgumentNullException(nameof(currencyRate));
@@ -80,15 +108,18 @@ public class CurrencyService
currencyRate.CurrencyId = exists.Id;
currencyRate.DateTime = currencyRate.DateTime.Date;
var rate = _currencyRateRepository.GetAtDate(currencyRate.CurrencyId, currencyRate.DateTime);
if (rate.All(x => x.Rate != currencyRate.Rate))
var rates = _currencyRateRepository.GetAtDate(currencyRate.CurrencyId, currencyRate.DateTime);
var rate = rates.Find(x => x.Rate == currencyRate.Rate);
if (rate == null)
{
if (_currencyRateRepository.AddRate(currencyRate))
if (!_currencyRateRepository.AddRate(currencyRate))
{
return result.Set(currencyRate);
return result.Set(CurrencyAddRateStatus.failed);
}
rate = currencyRate;
}
return result.Set(CurrencyAddRateStatus.failed);
return result.Set(rate);
}
}
@@ -1,16 +0,0 @@
namespace MyOffice.Services.Currency.Domain
{
public enum AddCurrencyStatus
{
success,
failed,
exists,
}
public enum CurrencyAddRateStatus
{
not_found,
success,
failed,
}
}
@@ -0,0 +1,8 @@
namespace MyOffice.Services.Currency.Domain;
public enum CurrencyAddRateStatus
{
not_found,
success,
failed,
}
@@ -0,0 +1,9 @@
namespace MyOffice.Services.Currency.Domain
{
public enum CurrencyAddStatus
{
success,
failed,
exists,
}
}
@@ -0,0 +1,7 @@
namespace MyOffice.Services.Currency.Domain;
public class CurrencyEdit
{
public string Name { get; set; } = null!;
public string ShortName { get; set; } = null!;
}
@@ -0,0 +1,8 @@
namespace MyOffice.Services.Currency.Domain;
public enum CurrencyEditStatus
{
success,
not_found,
failed,
}