Last active
November 21, 2018 10:23
-
-
Save IlyaLavrov97/f178ef2318952f1a9ca476e2c5bacea0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//1) Вынести функцию Transfer в класс Account и переименовать | |
//2) Сделать проверку на достаточное кол-во средств у отправляющего аккаунта | |
//3) Прикрутить уведомления пользователям о переводе средств | |
public class Account | |
{ | |
public double Balance { get; set; } | |
public bool TryTransferTo(Account toAccount, double amount) | |
{ | |
if(Balance < amount) | |
{ | |
// Notify about balance flaw | |
return false; | |
} | |
else | |
{ | |
Balance -= amount; | |
toAccount.Balance += amount; | |
// Notify about balance transfer | |
return true; | |
} | |
} | |
} | |
//Если делать все правильно с MVVM: | |
//1) Необходимо создать сервис AccountsService. В нем будет ссылка на REST API Service, который имеет биндинг запросов к серверу. | |
//2) Обернуть его в интерфейс IAccountService. | |
//3) Зарегистрировать в IoC. Если брать популярные MVVM фрейворки IoC уже встроенный. | |
//4) Создать и реализовать метод Transfer как показанно ниже. | |
//5) Зарезолвить IAccountService в AccountsVM и вызвать метод Transfer в необходимом месте. | |
public class AccountsService : IAccountsService | |
{ | |
private IRESTService _restService; | |
public AccountsService(IRESTService restService) | |
{ | |
_restService = restService; | |
} | |
public async Task<bool> Transfer(Account toAccount, Account fromAccount, double amount) | |
{ | |
if(fromAccount.Balance < amount) | |
{ | |
return false; | |
} | |
else | |
{ | |
ServiceResult result = await _restService.Transfer(new TransferParam | |
{ | |
FromId = fromAccount.Id, | |
ToId = toAccount.Id, | |
Amount = amount | |
}); | |
if(!result.IsError) | |
{ | |
fromAccount.Balance -= amount; | |
toAccount.Balance += amount; | |
return true; | |
} | |
else | |
return false; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment