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); }
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); } }