private async Task InitializeAdmin() { if (await _cardManager.AnyAsync) { return; } var adminCitizen = new CitizenDetail { Id = _config["Admin:citizenId"], FullName = new FullName("محمود", "حمدي", "شعبان", "شاهين"), Address = new Address("Street", "City", "State", "Country", "12345"), PhotoUrl = "admin.png", Create = DateTime.Now, PrivateKey = await _cryptographyService.EncryptAsync(_citizenKeys.PrivateKeyXml), PublicKey = _citizenKeys.PublicKeyXml, Religion = Religion.Muslim, Gender = Gender.Male, SocialStatus = SocialStatus.Single, HealthInfo = new HealthInfo { Id = Guid.NewGuid().ToString(), BloodType = BloodType.A, Phone1 = "+20101234567" } }; await _context.CitizenDetails.AddAsync(adminCitizen); await _context.SaveChangesAsync(); var(result, cardId) = await _cardManager.RegisterAdminAsync( _config["Admin:cardId"], adminCitizen.Id, "#m1234567", "*****@*****.**", "010000000000000" ); if (!result.Succeeded) { throw new Exception("failed to initialize admin"); } result = await _cardManager.AddToRoleAsync(cardId, Roles.Admin); if (!result.Succeeded) { throw new Exception("failed to add admin to the admin role"); } }
public async Task <Unit> Handle(AddHealthRecordCommand request, CancellationToken cancellationToken) { var healthInfo = await _context.HealthInformation.FindAsync(request.HealthInfoId); if (healthInfo is null) { throw new EntityNotFoundException(nameof(HealthInfo), request.HealthInfoId); } healthInfo.HealthRecords.Add(new HealthRecord { Id = Guid.NewGuid().ToString(), Medications = request.Medications, Diagnosis = request.Diagnosis, Attachments = (await request.Attachments.SaveAsync(_directoryService.HealthInfoDirectory)) .Select(b => new HealthRecordAttachment { Id = b.Name }) .ToList() }); await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <CreateCitizenResult> Handle(CreateCitizenCommand request, CancellationToken cancellationToken) { await request.Photo.SaveAsync(_directories.CitizenPhotosDirectory); var citizen = new CitizenDetail { PrivateKey = await _cryptographyService.EncryptAsync(_keys.PrivateKeyXml), PublicKey = _keys.PublicKeyXml, Id = Guid.NewGuid().ToString(), FatherId = request.FatherId, MotherId = request.MotherId, FullName = request.FullName, Address = request.Address, Gender = request.Gender, Religion = request.Religion, SocialStatus = request.SocialStatus, DateOfBirth = request.DateOfBirth, PhotoUrl = request.Photo.Name, HealthInfo = new HealthInfo { Phone1 = request.HealthEmergencyPhone1, Phone2 = request.HealthEmergencyPhone2, Phone3 = request.HealthEmergencyPhone3, BloodType = request.BloodType } }; await _context.CitizenDetails.AddAsync(citizen, cancellationToken); await _context.SaveChangesAsync(cancellationToken); return(new CreateCitizenResult { CitizenId = citizen.Id, HealthInfoId = citizen.HealthInfo.Id }); }
public async Task <Unit> Handle(DeleteCitizenCommand request, CancellationToken cancellationToken) { var citizen = await _context.CitizenDetails.Include(c => c.Card) .FirstOrDefaultAsync(c => c.Id == request.Id, cancellationToken); if (citizen is null) { throw new EntityNotFoundException("Citizen", request.Id); } var result = Result.Success(); try { result = await _cardManager.DeleteAsync(citizen.Card.Id); } catch (EntityNotFoundException) { } if (result.Failed) { throw new DbUpdateException(result.Errors.FirstOrDefault() ?? string.Empty); } _context.CitizenDetails.Remove(citizen); await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <Unit> Handle(UpdateCitizenCommand request, CancellationToken cancellationToken) { var citizen = await _context.CitizenDetails.FindAsync(request.Id); if (citizen == null) { throw new EntityNotFoundException("Citizen", request.Id); } if (request.Photo != null) { if (citizen.PhotoUrl is null) { await request.Photo.SaveAsync(_directories.CitizenPhotosDirectory); citizen.PhotoUrl = request.Photo.Name; } else { try { BinaryFile.Delete(_directories.CitizenPhotosDirectory, citizen.PhotoUrl); await request.Photo.SaveAsync(_directories.CitizenPhotosDirectory); citizen.PhotoUrl = request.Photo.Name; } catch (Exception) { throw new FileProcessingException(request.Photo.Name); } } } // update any changes if (request.FatherId != null) { citizen.FatherId = request.FatherId; } if (request.MotherId != null) { citizen.MotherId = request.MotherId; } if (request.FullName != null) { citizen.FullName = request.FullName; } if (request.Address != null) { citizen.Address = request.Address; } if (request.Gender != Gender.None) { citizen.Gender = request.Gender; } if (request.Religion != Religion.None) { citizen.Religion = request.Religion; } if (request.SocialStatus != SocialStatus.None) { citizen.SocialStatus = request.SocialStatus; } if (request.DateOfBirth != default) { citizen.DateOfBirth = request.DateOfBirth; } _context.CitizenDetails.Update(citizen); try { await _context.SaveChangesAsync(cancellationToken); } catch (Exception) { throw new DbUpdateException(); } return(Unit.Value); }