Exemplo n.º 1
0
        public async Task CreateDonorProfileAsync(DonorDataProfileInputModel input, string userId)
        {
            var user = this.userRepository.All()
                       .Where(u => u.Id == userId)
                       .FirstOrDefault();

            if (user == null)
            {
                throw new ArgumentException(GlobalConstants.NoUserRegistrationErrorMessage);
            }

            if (input.Age == 0 || input.FirstName == null || input.LastName == null)
            {
                throw new ArgumentException(GlobalConstants.NoDonorDataErrorMessage);
            }

            var donorData = new DonorData
            {
                ApplicationUserId = user.Id,
                FirstName         = input.FirstName,
                MiddleName        = input.MiddleName,
                LastName          = input.LastName,
                Age     = input.Age,
                Contact = new Contact
                {
                    Phone = input.PhoneNumber,
                    Email = user.Email,
                },
                Location = new Location
                {
                    Country           = input.Country,
                    City              = input.City,
                    AdressDescription = input.AdressDescription,
                },
                Examination = new Examination
                {
                    Disease = new Disease
                    {
                        DiseaseStatus      = input.DiseaseStatus,
                        DiseaseName        = input.DiseaseName,
                        DiseaseDescription = input.DiseaseDescription,
                    },
                },
                DonorAveilableStatus = input.DonorAveilableStatus,
                BloodGroup           = input.BloodGroup,
                RhesusFactor         = input.RhesusFactor,
            };

            await this.donorRepository.AddAsync(donorData);

            await this.donorRepository.SaveChangesAsync();
        }
        public async Task CreateDonationCorectlyTest()
        {
            var dbContext = ApplicationDbContextInMemoryFactory.InitializeContext();

            var donationEventRepository = new EfDeletableEntityRepository <DonationEvent>(dbContext);
            var bloodBankRepository     = new EfDeletableEntityRepository <BloodBank>(dbContext);
            var bagRepository           = new EfDeletableEntityRepository <BloodBag>(dbContext);
            var hospitalDataRepository  = new EfDeletableEntityRepository <HospitalData>(dbContext);
            var donorDataRepository     = new EfDeletableEntityRepository <DonorData>(dbContext);
            var requestRepository       = new EfDeletableEntityRepository <Request>(dbContext);
            var usersRepository         = new EfDeletableEntityRepository <ApplicationUser>(dbContext);
            var rolesRepository         = new EfDeletableEntityRepository <ApplicationRole>(dbContext);

            var service = new DonationEventsService(
                donationEventRepository,
                bloodBankRepository,
                bagRepository,
                hospitalDataRepository,
                donorDataRepository,
                requestRepository);


            var userDonor = new ApplicationUser
            {
                UserName = "******",
                Email    = "*****@*****.**",
            };
            await dbContext.Users.AddAsync(userDonor);

            var donor = new DonorData
            {
                ApplicationUserId = userDonor.Id,
            };
            await dbContext.DonorData.AddAsync(donor);

            var userHospital = new ApplicationUser
            {
                UserName = "******",
                Email    = "*****@*****.**",
            };
            await dbContext.Users.AddAsync(userDonor);

            var hospital = new HospitalData
            {
                ApplicationUserId = userHospital.Id,
            };
            await dbContext.HospitalData.AddAsync(hospital);

            var bloodBank = new BloodBank
            {
                HospitalDataId = hospital.Id,
            };
            await dbContext.BloodBanks.AddAsync(bloodBank);

            hospital.BloodBank = bloodBank;

            await dbContext.SaveChangesAsync();

            await service.CreateDonation(hospital.Id, donor.ApplicationUserId, 500, 0, BloodGroup.A, RhesusFactor.Negative);

            var donotionEvent = donationEventRepository.All().FirstOrDefault(de => de.UserDonorId == donor.ApplicationUserId);

            Assert.NotNull(donotionEvent);
        }
Exemplo n.º 3
0
        public async Task SeedAsync(ApplicationDbContext dbContext, IServiceProvider serviceProvider)
        {
            var userManager         = serviceProvider.GetRequiredService <UserManager <ApplicationUser> >();
            var donorDataRepository = serviceProvider.GetService <IRepository <DonorData> >();
            var allUsers            = serviceProvider.GetService <IDeletableEntityRepository <ApplicationUser> >();
            var deletedUsers        = allUsers
                                      .AllAsNoTrackingWithDeleted()
                                      .Where(u => u.IsDeleted == true)
                                      .ToList();

            // Seeding donors and donorsData
            for (int i = 0; i < 10; i++)
            {
                var user = await userManager.FindByEmailAsync($"Donor{i}@donor.bg");

                if (user != null)
                {
                    return;
                }

                user = new ApplicationUser
                {
                    UserName       = $"Donor{i}@donor.bg",
                    Email          = $"Donor{i}@donor.bg",
                    EmailConfirmed = true,
                };

                if (deletedUsers.Any(u => u.Email == user.Email))
                {
                    return;
                }

                await userManager.CreateAsync(user, $"Donor{i}@donor.bg");

                await userManager.AddToRoleAsync(user, GlobalConstants.DonorRoleName);

                Random random    = new Random();
                var    donorData = new DonorData
                {
                    ApplicationUserId = user.Id,
                    ApplicationUser   = user,
                    FirstName         = $"Donor{i}",
                    MiddleName        = $"Donor{i}",
                    LastName          = $"Donor{i}",
                    Age     = 20 + i,
                    Contact = new Contact
                    {
                        Email = user.Email,
                        Phone = $"0{i * 2}{i * 3}{i * 4}",
                    },
                    Location = new Location
                    {
                        Country           = "Bulgaria",
                        City              = $"City{i}",
                        AdressDescription = $"Street{i}",
                    },
                    DonorAveilableStatus = (EmergencyStatus)random.Next(Enum.GetNames(typeof(EmergencyStatus)).Length),
                    BloodGroup           = (BloodGroup)random.Next(Enum.GetNames(typeof(BloodGroup)).Length),
                    RhesusFactor         = (RhesusFactor)random.Next(Enum.GetNames(typeof(RhesusFactor)).Length),
                    Examination          = new Examination
                    {
                        ExaminationDate = DateTime.UtcNow,
                        Disease         = new Disease
                        {
                            DiseaseName        = "NoDesease",
                            DiseaseDescription = "NoDescription",
                            DiseaseStatus      = DiseaseStatus.Negative,
                        },
                    },
                };
                await donorDataRepository.AddAsync(donorData);
            }
        }