public async Task ChangeCardPin(dynamic data) { try { string cardNum = data["card_num"]; string newPin = data["new_pin"]; var card = await _unitOfWork.Repository <Card>().GetAsync(c => c.Number == cardNum); card.PinHash = CryptoHash.ComputeHash(newPin, new MD5CryptoServiceProvider()); _unitOfWork.Repository <Card>().Update(card); await _unitOfWork.SaveChangesAsync(); } catch (InvalidOperationException) { throw new Exception("Incorrect card number or new pin "); } }
public async Task <User> LoginToAtm(dynamic data) { try { string cardNum = data["number"]; string pin = data["pincode"]; var card = await _unitOfWork.Repository <Card>().GetAsync( c => c.Number == cardNum && c.PinHash == CryptoHash.ComputeHash(pin, new MD5CryptoServiceProvider())); var ac = await _unitOfWork.Repository <Account>().GetAsync( acc => acc.Id == card.AccountId); return(await _unitOfWork.Repository <User>().GetAsync( user => user.Passport == ac.OwnerPassport)); } catch (InvalidOperationException) { throw new Exception("Incorrect card number or pincode"); } }