コード例 #1
0
ファイル: InitializeDbCommand.cs プロジェクト: xshaheen/egid
            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");
                }
            }
コード例 #2
0
            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);
            }
コード例 #3
0
ファイル: CreateCitizenCommand.cs プロジェクト: xshaheen/egid
            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
                });
            }
コード例 #4
0
ファイル: DeleteCitizenCommand.cs プロジェクト: xshaheen/egid
            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);
            }
コード例 #5
0
            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);
            }