public async Task <IActionResult> Create(DonationEventInputModel viewModel, RequestInfoViewModel model) { var userDonorId = this.userManager.GetUserId(this.User); var hospitalDataId = model.HospitalDataId != null ? model.HospitalDataId : viewModel.HospitalId; if (hospitalDataId == null) { return(this.RedirectToAction("HttpStatusCodeHandler", "Error", this.NotFound())); } double neededQuantity = model.NeededQuantity; double quantity = viewModel.Quantity; BloodGroup bloodGroup = viewModel.BloodGroup; RhesusFactor rhesusFactor = viewModel.RhesusFactor; await this.donationEventsService .CreateDonation( hospitalDataId, userDonorId, neededQuantity, quantity, bloodGroup, rhesusFactor); return(this.RedirectToAction("QAndA", "Home")); }
public async Task CreateDonation( string requestOrHospitalId, string userDonorId, double neededQuantity, double quantity, BloodGroup bloodGroup, RhesusFactor rhesusFactor) { var donorData = this.donorDataUserRepository.All() .FirstOrDefault(ddu => ddu.ApplicationUserId == userDonorId); if (donorData == null) { throw new ArgumentException(GlobalConstants.NoDonorDataErrorMessage); } var request = this.requestRepository.All() .FirstOrDefault(r => r.Id == requestOrHospitalId); var hospitalData = this.hospitalDataUserRepository.All() .FirstOrDefault(hd => request != null ? hd.Id == request.HospitalId : hd.Id == requestOrHospitalId); if (hospitalData == null) { throw new ArgumentException(GlobalConstants.NoHospitalDataErrorMessage); } var bloodBank = this.bloodBankRepository.All() .FirstOrDefault(bbk => bbk.HospitalDataId == hospitalData.Id); var bag = this.bloodBagRepository.All() .FirstOrDefault(bg => bg.BloodBankId == bloodBank.Id); var donationEvent = new DonationEvent { DateOfDonation = DateTime.UtcNow, RequestId = request != null ? requestOrHospitalId : null, UserDonorId = userDonorId, }; await this.donationEventRepository.AddAsync(donationEvent); await this.donationEventRepository.SaveChangesAsync(); bag = new BloodBag { Quantity = quantity != 0 ? quantity : neededQuantity, CollectionDate = DateTime.UtcNow, DonorDataId = donorData.Id, BloodGroup = bloodGroup, RhesusFactor = rhesusFactor, BloodBankId = bloodBank.Id, }; await this.bloodBagRepository.AddAsync(bag); await this.bloodBagRepository.SaveChangesAsync(); }
public async Task AddRecipientAsync( string userHospitalId, string firstName, string middleName, string lastName, int age, double neededQuantity, EmergencyStatus recipientEmergency, BloodGroup bloodGroup, RhesusFactor rhesusFactor) { var hospitalData = this.hospitalDataRepository.All() .FirstOrDefault(uhd => uhd.ApplicationUserId == userHospitalId); if (hospitalData == null) { throw new ArgumentException(GlobalConstants.NoHospitalDataErrorMessage); } if (firstName == null || middleName == null || lastName == null || age == 0 || neededQuantity == 0) { throw new ArgumentException(GlobalConstants.NotFullRecipientDataErrorMessage); } var recipient = new Recipient { FirstName = firstName, MiddleName = middleName, LastName = lastName, Age = age, NeededQuantity = neededQuantity, RecipientEmergency = recipientEmergency, BloodGroup = bloodGroup, RhesusFactor = rhesusFactor, }; var recipientHospitalData = new RecipientHospitalData { HospitalDataId = hospitalData.Id, RecipientId = recipient.Id, }; recipient.HospitalDataId = recipientHospitalData.HospitalDataId; await this.recipientsRepository.AddAsync(recipient); await this.recipientsRepository.SaveChangesAsync(); await this.recipientHospitalDataRepository.AddAsync(recipientHospitalData); await this.recipientHospitalDataRepository.SaveChangesAsync(); }
public async Task <string> CreateRequestAsync( string userId, string content, DateTime publishedOn, EmergencyStatus emergencyStatus, BloodGroup bloodGroup, RhesusFactor rhesusFactor, double neededQuantity) { if (neededQuantity == 0) { throw new ArgumentException(GlobalConstants.NoQuantityErrrorMessage); } var hospitalData = this.hospitalDataRepository.All() .Where(hd => hd.ApplicationUserId == userId) .FirstOrDefault(); if (hospitalData == null) { throw new ArgumentException(GlobalConstants.NoHospitalDataErrorMessage); } var location = this.locationDataRepository.All() .FirstOrDefault(l => l.Id == hospitalData.LocationId); var request = new Request { HospitalName = hospitalData.Name, Content = content, PublishedOn = publishedOn, EmergencyStatus = emergencyStatus, BloodGroup = bloodGroup, RhesusFactor = rhesusFactor, NeededQuantity = neededQuantity, Location = location, }; request.HospitalId = hospitalData.Id; await this.requestsRepository.AddAsync(request); await this.requestsRepository.SaveChangesAsync(); var userHospital = new HospitalDataRequest { HospitalDataId = hospitalData.Id, RequestId = request.Id, }; await this.requestsHospitalDataRepository.AddAsync(userHospital); await this.requestsHospitalDataRepository.SaveChangesAsync(); return(request.Id); }
public async Task <IEnumerable <BloodBag> > EmptyBloodAsync(string userHospitalDataId, BloodGroup bloodGroup, RhesusFactor rhesusFactor) { var hospitalData = this.hospitalsRepository .All() .FirstOrDefault(hd => hd.ApplicationUserId == userHospitalDataId); var bloodBank = this.bloodBankRepository .All() .FirstOrDefault(bb => bb.HospitalDataId == hospitalData.Id); var bloodBags = this.bagRepository.All() .Where(bag => bag.BloodBankId == bloodBank.Id && bag.BloodGroup == bloodGroup && bag.RhesusFactor == rhesusFactor); foreach (var bag in bloodBags) { bag.IsDeleted = true; } await this.bagRepository.SaveChangesAsync(); return(bloodBags.ToList()); }
public Blood(BloodType type, RhesusFactor rhFactor) { BloodType = type; RhesusFactor = rhFactor; }