public async Task <bool> Handle(DeleteStudentCommand request, CancellationToken cancellationToken) { var student = await repository.GetAsync(request.Id); student.Address?.Delete(); student.AssignedCourses.ToList().ForEach(x => x.Delete()); student.Phones.ToList().ForEach(x => x.Delete()); student.Delete(); await repository.UnitOfWork.SaveChangesAsync(); return(true); }
public async Task ExecuteAsync() { using (ITransaction transaction = _transactionManager.Create()) { try { IList <SharedDataKey> existingKeys = (await _commandRepository.GetAsync()).ToList(); foreach (FieldInfo fieldInfo in typeof(Library.Core.Domain.DataProtectors.SharedDataKeys).GetFields()) { string keyName = fieldInfo.GetRawConstantValue().ToString(); SharedDataKey key = existingKeys.SingleOrDefault(k => k.Name == keyName); if (key == null) { SharedDataKey sharedDataKey = await _createSharedDataKeyCommand.ExecuteAsync(new CreateSharedDataKeyCommandDdto { Name = keyName, Value = _encryptionFactory.CreateKey() }); await _commandRepository.AddAsync(sharedDataKey); } else { await _changeSharedDataKeyCommand.ExecuteAsync(key, new ChangeSharedDataKeyCommandDdto { Value = _encryptionFactory.CreateKey() }); await _commandRepository.UpdateAsync(key); } } transaction.Commit(); } catch (Exception) { _logger.LogCritical("Unable to initialise shared data keys"); throw; } } }
public async Task <Student> Handle(UpdateStudentCommand request, CancellationToken cancellationToken) { var student = await repository.GetAsync(request.Id); student.FirstName = request.FirstName; student.MiddleName = request.MiddleName; student.LastName = request.LastName; student.Email = request.Email; if (request.Address != null) { /* TODO: CALL TO SET LAT LONG */ student.UpdateAddress(request.Address); } if (student.Phones != null) { var newPhones = new List <Phone>(); foreach (var phone in request.Phones) { if (!student.UpdatePhone(phone)) { newPhones.Add(phone); } } foreach (var newPhone in newPhones) { student.AddPhone(newPhone); } } await repository.UnitOfWork.SaveChangesAsync(); return(student); }