private static async Task <IDroidDto> ExecuteGetSerialNumberAsync(DroidId serialNumber, IDbConnection connection) { return(await connection.QueryFirstOrDefaultAsync <DroidDto>( DroidStoredProcedures.DisplayDroidBySerial, new { DroidId = (Guid)serialNumber }, commandType : CommandType.StoredProcedure)); }
private static async Task <int> ExecuteInsertDroidArmAsync(DroidId serialNumber, Arm arm, IDbConnection connection) { return(await connection.ExecuteAsync( DroidStoredProcedures.InsertArm, arm.ToDto(serialNumber), commandType : CommandType.StoredProcedure)); }
private static async Task <IEnumerable <IArmDto> > ExecuteGetDroidArmsAsync(DroidId serialNumber, IDbConnection connection) { return(await connection.QueryAsync <ArmDto>( DroidStoredProcedures.DroidArms, new { DroidId = (Guid)serialNumber }, commandType : CommandType.StoredProcedure)); }
private static async Task <int> ExecuteDeleteAsync(DroidId serialNumber, IDbConnection connection) { return(await connection.ExecuteAsync( DroidStoredProcedures.DeleteDroid, new { serial_number = (Guid)serialNumber }, commandType : CommandType.StoredProcedure)); }
private Task <bool> DeleteInternalAsync(DroidId serialNumber) { int deletedLines = _droids.RemoveAll(d => d.DroidId == (Guid)serialNumber); bool deleted = deletedLines != 0; return(Task.FromResult(deleted)); }
public Task <IDroidDto> GetBySerialNumberAsync(DroidId serialNumber, Action <IDroidUnicityValidationInfo> assertDroidExists) { var droidDto = _droids.FirstOrDefault(droid => droid.DroidId == (Guid)serialNumber); assertDroidExists(new DroidUnicityValidationInfo { Droid = droidDto }); return(Task.FromResult(droidDto)); }
public void ArmToDto_WithNullArm_ReturnsNull() { // Arrange Arm arm = null; DroidId droidId = Guid.NewGuid(); // Act var armDto = arm.ToDto(droidId); // Assert armDto.Should().BeNull(); }
public async Task <IDroidDto> GetBySerialNumberAsync(DroidId serialNumber, Action <IDroidUnicityValidationInfo> assertDroidExists) { using (var connection = _connectionProvider()) { var droidDto = await ExecuteGetSerialNumberAsync(serialNumber, connection); assertDroidExists(new DroidUnicityValidationInfo { Droid = droidDto }); return(droidDto); } }
public static IArmDto ToDto(this Arm arm, DroidId droidId) { if (arm == null) { return(null); } return(new ArmDto { DroidId = (Guid)droidId, ArmId = (Guid)arm.SerialNumber }); }
public Task InsertDroidArmAsync(DroidId serialNumber, Arm arm, Action <IDroidValidationInfo> assertDroidIsValid) { // INFO: In multi-instance, semaphore is not possible, here is a check before insert it var nbExistingArms = _arms.Count(droid => droid.DroidId == (Guid)serialNumber); var nbArmsAfterInsert = nbExistingArms + 1; var droidValidation = new DroidValidationInfo { NbArm = nbArmsAfterInsert }; assertDroidIsValid(droidValidation); _arms.Add(arm.ToDto(serialNumber)); return(Task.CompletedTask); }
public async Task <bool> DeleteAsync(DroidId serialNumber, DeleteArmListAction previousActions) { if (!await previousActions.Action(previousActions.SerialNumbers, null).ConfigureAwait(false)) { return(false); } if (!await DeleteInternalAsync(serialNumber).ConfigureAwait(false)) { return(false); } return(true); }
public async Task <bool> DeleteAsync(DroidId serialNumber, DeleteArmListAction previousActions) { using (var transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) using (var connection = _connectionProvider()) { if (!await previousActions.Action(previousActions.SerialNumbers, connection)) { return(false); } if ((await ExecuteDeleteAsync(serialNumber, connection)) > 0) { transaction.Complete(); return(true); } } return(false); }
private Droid(DroidId serialNumber, DateTimeOffset createdOn) // INFO: Private constructor prevent local identifier update (no private set) { SerialNumber = serialNumber; CreatedOn = createdOn; }
public Task <IReadOnlyCollection <IArmDto> > GetDroidArmsAsync(DroidId serialNumber) { var arms = _arms.Where(a => a.DroidId == (Guid)serialNumber).ToList(); return(Task.FromResult <IReadOnlyCollection <IArmDto> >(arms)); }
public override string ToString() { return(DroidId.ToString()); }
public Task <IReadOnlyCollection <IArmDto> > GetDroidArmsAsync(DroidId serialNumber) { return(null); }
public Task InsertDroidArmAsync(DroidId serialNumber, Arm arm, Action <IDroidValidationInfo> assertDroidIsValid) { return(null); }
public UpdateDroid WithSerialNumber(Guid serialNumber) { SerialNumber = serialNumber; return(this); }
public CreateArm(Guid serialNumber) { SerialNumber = serialNumber; }
public DeleteDroid(Guid serialNumber) { SerialNumber = serialNumber; }
public UpdateDroid(string name, string nickname, Guid serialNumber) { Name = name ?? throw new ArgumentNullException(nameof(name)); Nickname = nickname ?? throw new ArgumentNullException(nameof(nickname)); SerialNumber = serialNumber; }