private static async Task <IDroidDto> ExecuteGetSerialNumberAsync(DroidId serialNumber, IDbConnection connection)
 {
     return(await connection.QueryFirstOrDefaultAsync <DroidDto>(
                DroidStoredProcedures.DisplayDroidBySerial,
                new { DroidId = (Guid)serialNumber },
                commandType : CommandType.StoredProcedure));
 }
Example #2
0
 private static async Task <int> ExecuteInsertDroidArmAsync(DroidId serialNumber, Arm arm, IDbConnection connection)
 {
     return(await connection.ExecuteAsync(
                DroidStoredProcedures.InsertArm,
                arm.ToDto(serialNumber),
                commandType : CommandType.StoredProcedure));
 }
Example #3
0
 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));
 }
Example #5
0
        private Task <bool> DeleteInternalAsync(DroidId serialNumber)
        {
            int  deletedLines = _droids.RemoveAll(d => d.DroidId == (Guid)serialNumber);
            bool deleted      = deletedLines != 0;

            return(Task.FromResult(deleted));
        }
Example #6
0
        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);
            }
        }
Example #9
0
        public static IArmDto ToDto(this Arm arm, DroidId droidId)
        {
            if (arm == null)
            {
                return(null);
            }

            return(new ArmDto
            {
                DroidId = (Guid)droidId,
                ArmId = (Guid)arm.SerialNumber
            });
        }
Example #10
0
        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);
        }
Example #11
0
        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);
        }
Example #13
0
 private Droid(DroidId serialNumber, DateTimeOffset createdOn) // INFO: Private constructor prevent local identifier update (no private set)
 {
     SerialNumber = serialNumber;
     CreatedOn    = createdOn;
 }
Example #14
0
        public Task <IReadOnlyCollection <IArmDto> > GetDroidArmsAsync(DroidId serialNumber)
        {
            var arms = _arms.Where(a => a.DroidId == (Guid)serialNumber).ToList();

            return(Task.FromResult <IReadOnlyCollection <IArmDto> >(arms));
        }
Example #15
0
 public override string ToString()
 {
     return(DroidId.ToString());
 }
Example #16
0
 public Task <IReadOnlyCollection <IArmDto> > GetDroidArmsAsync(DroidId serialNumber)
 {
     return(null);
 }
Example #17
0
 public Task InsertDroidArmAsync(DroidId serialNumber, Arm arm, Action <IDroidValidationInfo> assertDroidIsValid)
 {
     return(null);
 }
Example #18
0
 public UpdateDroid WithSerialNumber(Guid serialNumber)
 {
     SerialNumber = serialNumber;
     return(this);
 }
Example #19
0
 public CreateArm(Guid serialNumber)
 {
     SerialNumber = serialNumber;
 }
Example #20
0
 public DeleteDroid(Guid serialNumber)
 {
     SerialNumber = serialNumber;
 }
Example #21
0
 public UpdateDroid(string name, string nickname, Guid serialNumber)
 {
     Name         = name ?? throw new ArgumentNullException(nameof(name));
     Nickname     = nickname ?? throw new ArgumentNullException(nameof(nickname));
     SerialNumber = serialNumber;
 }