public async Task <ActionResult> CreateBloodBank([FromBody] BloodBankModel bloodBank)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new ApiResponse {
                    Status = false, ModelState = ModelState
                }));
            }

            var instance = BloodBank.Create(bloodBank.Doctor);

            try
            {
                var newBloodBank = await _repository.AddAsync(instance);

                if (newBloodBank == null)
                {
                    return(BadRequest(new ApiResponse {
                        Status = false
                    }));
                }
                return(CreatedAtRoute("GetBloodBankRoute", new { id = newBloodBank.BloodBankId },
                                      new ApiResponse {
                    Status = true, BloodBank = newBloodBank
                }));
            }
            catch
            {
                return(BadRequest(new ApiResponse {
                    Status = false
                }));
            }
        }
Exemplo n.º 2
0
        public ActionResult CreateBloodBank(BloodBankViewModel bloodBankViewModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    BloodBank hospital = new BloodBank()
                    {
                        Name      = bloodBankViewModel.Name,
                        County_Id = bloodBankViewModel.County_Id
                    };
                    unitOfWork.BloodBankRepository.Insert(hospital);
                    unitOfWork.Save();

                    return(RedirectToAction("BloodBanks"));
                }
                catch
                {
                    return(View());
                }
            }
            else
            {
                return(View());
            }
        }
Exemplo n.º 3
0
        public async Task CreateHospitalProfileAsync(HospitalProfileInputModel input, string userId)
        {
            var user = this.usersRepository.All()
                       .Where(u => u.Id == userId)
                       .FirstOrDefault();

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

            var hospitalData = new HospitalData
            {
                ApplicationUserId = userId,
                Name    = input.Name,
                Contact = new Contact
                {
                    Phone = input.Phone,
                    Email = input.Email,
                },
                Location = new Location
                {
                    Country           = input.Country,
                    City              = input.City,
                    AdressDescription = input.AdressDescription,
                },
            };

            await this.hospitalsRepository.AddAsync(hospitalData);

            await this.hospitalsRepository.SaveChangesAsync();

            var appUserHospitalData = new ApplicationUserHospitalData
            {
                ApplicationUserId = userId,
                HospitalDataId    = hospitalData.Id,
            };

            await this.appUsersHospitalRepository.AddAsync(appUserHospitalData);

            await this.appUsersHospitalRepository.SaveChangesAsync();

            var bloodBank = new BloodBank
            {
                HospitalDataId = hospitalData.Id,
            };

            await this.bloodBankRepository.AddAsync(bloodBank);

            await this.bloodBankRepository.SaveChangesAsync();

            var bag = new BloodBag
            {
                BloodBankId = bloodBank.Id,
            };

            await this.bagRepository.AddAsync(bag);

            await this.bagRepository.SaveChangesAsync();
        }
        private static async Task SeedDataAsync(ApplicationDbContext dbContext)
        {
            // Seeding blood bank
            var bloodBank = new BloodBank
            {
                HospitalDataId = "123",
            };

            dbContext.BloodBanks.Add(bloodBank);
            await dbContext.SaveChangesAsync();

            // Seeding blood bag
            var bag = new BloodBag
            {
                Quantity       = 500,
                CollectionDate = DateTime.UtcNow,
                DonorDataId    = "789",
                BloodGroup     = BloodGroup.A,
                RhesusFactor   = RhesusFactor.Negative,
                BloodBankId    = bloodBank.Id,
            };
            await dbContext.BloodBags.AddAsync(bag);

            await dbContext.SaveChangesAsync();
        }
Exemplo n.º 5
0
        public void AddDonor_AddsDonorToBloodBank_DonorList()
        {
            //Arrange
            BloodBank testBloodBank = new BloodBank("Puget Sound", "Seattle", "7777777");

            testBloodBank.Save();

            Donor testDonor = new Donor("Tim", "3333333", "08/11/93", "IIIRh+", "Healthy");

            testDonor.Save();

            //Act
            testBloodBank.AddDonor(testDonor);

            List <Donor> result = testBloodBank.GetDonors();

            Console.WriteLine(result.Count);
            List <Donor> testList = new List <Donor> {
                testDonor
            };

            Console.WriteLine(testList.Count);

            //Assert
            CollectionAssert.AreEqual(testList, result);
        }
        public ActionResult SaveBank(string massage, BloodBank bank)
        {
            if (!ModelState.IsValid)
            {
                return(View("NewBank", bank));
            }

            if (bank.Id == 0)
            {
                if (User.IsInRole(UserRoles.CanApproveAndDeleteRecord))
                {
                    bank.IsApproved = true;
                }

                _context.BloodBanks.Add(bank);
            }
            else
            {
                var bankInDb = _context.BloodBanks.SingleOrDefault(b => b.Id == bank.Id);

                Mapper.Map(bank, bankInDb);
            }

            _context.SaveChanges();

            return(RedirectToAction("Index", new { massage = massage }));
        }
Exemplo n.º 7
0
        public ActionResult DeleteConfirmed(int id)
        {
            BloodBank bloodBank = db.BloodBanks.Find(id);

            db.BloodBanks.Remove(bloodBank);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemplo n.º 8
0
        public void GetAll_DatabaseEmptyAtFirst_0()
        {
            //Arrange, Act
            int result = BloodBank.GetAll().Count;

            //Assert
            Assert.AreEqual(0, result);
        }
Exemplo n.º 9
0
        public void Equals_TrueForSameProperties_BloodBank()
        {
            //Arrange, Act
            BloodBank firstBloodBank  = new BloodBank("Puget Sound", "Seattle", "7777777");
            BloodBank secondBloodBank = new BloodBank("Puget Sound", "Seattle", "7777777");

            //Assert
            Assert.AreEqual(firstBloodBank, secondBloodBank);
        }
Exemplo n.º 10
0
 public ActionResult Edit([Bind(Include = "Id,Name,fk_stateid")] BloodBank bloodBank)
 {
     if (ModelState.IsValid)
     {
         db.Entry(bloodBank).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.fk_stateid = new SelectList(db.States, "stateid", "StateName", bloodBank.fk_stateid);
     return(View(bloodBank));
 }
Exemplo n.º 11
0
        public ActionResult Create([Bind(Include = "Id,Name,fk_stateid")] BloodBank bloodBank)
        {
            if (ModelState.IsValid)
            {
                db.BloodBanks.Add(bloodBank);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.fk_stateid = new SelectList(db.States, "stateid", "StateName", bloodBank.fk_stateid);
            return(View(bloodBank));
        }
Exemplo n.º 12
0
        public ActionResult blood(BloodBank bloodbank)
        {
            if (ModelState.IsValid)
            {
                db.BloodBanks.Add(bloodbank);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }


            ViewBag.Hospital_ID = new SelectList(db.Hospitals, "id", "Name", bloodbank.Hospital_Id);
            return(View());
        }
Exemplo n.º 13
0
        // GET: ADMIN/BloodBanks/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            BloodBank bloodBank = db.BloodBanks.Find(id);

            if (bloodBank == null)
            {
                return(HttpNotFound());
            }
            return(View(bloodBank));
        }
Exemplo n.º 14
0
        public void Given_BloodBankRepository_When_AddAsyncingABloodBank_Then_TheBloodBankShouldBeProperlySaved()
        {
            RunOnDatabase(async ctx => {
                //Arrange
                var repository = new BloodBankRepository(ctx);
                var doctor     = Doctor.Create("Daniel", "Oana", "*****@*****.**", "parola", "0746524459", "bla", "Cardiologie", "Sf. Spiridon", "Iasi", "Str. Vasile Lupu");
                var bloodBank  = BloodBank.Create(doctor);
                //Act
                await repository.AddAsync(bloodBank);

                //Assert
                Assert.AreEqual(repository.GetAllAsync().Result.Count, 1);
            });
        }
Exemplo n.º 15
0
        // GET: ADMIN/BloodBanks/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            BloodBank bloodBank = db.BloodBanks.Find(id);

            if (bloodBank == null)
            {
                return(HttpNotFound());
            }
            ViewBag.fk_stateid = new SelectList(db.States, "stateid", "StateName", bloodBank.fk_stateid);
            return(View(bloodBank));
        }
Exemplo n.º 16
0
        public void Find_BloodBankID_True()
        {
            //Arrange
            BloodBank testBloodBank = new BloodBank("Puget Sound", "Seattle", "7777777");

            testBloodBank.Save();

            //Act
            Console.WriteLine(testBloodBank.GetId());
            BloodBank result = BloodBank.Find(testBloodBank.GetId());

            Console.WriteLine(result.GetId());

            //Assert
            Assert.AreEqual(testBloodBank, result);
        }
Exemplo n.º 17
0
        public void Given_BloodBankRepository_When_ReturningABloodBank_Then_TheBloodBankShouldBeProperlyReturned()
        {
            RunOnDatabase(async ctx => {
                //Arrange
                var repository = new BloodBankRepository(ctx);
                var doctor     = Doctor.Create("Daniel", "Oana", "*****@*****.**", "parola", "0746524459", "bla", "Cardiologie", "Sf. Spiridon", "Iasi", "Str. Vasile Lupu");
                var bloodBank  = BloodBank.Create(doctor);
                await repository.AddAsync(bloodBank);

                //Act
                var extractedBloodBank = await repository.GetByIdAsync(bloodBank.BloodBankId);

                //Assert
                Assert.AreEqual(bloodBank, extractedBloodBank);
            });
        }
Exemplo n.º 18
0
        public void Given_BloodBankRepository_When_EditingABloodBank_Then_TheBloodBankShouldBeProperlyEdited()
        {
            RunOnDatabase(async ctx => {
                //Arrange
                var repository = new BloodBankRepository(ctx);
                var doctor     = Doctor.Create("Daniel", "Oana", "*****@*****.**", "parola", "0746524459", "bla", "Cardiologie", "Sf. Spiridon", "Iasi", "Str. Vasile Lupu");
                var bloodBank  = BloodBank.Create(doctor);
                await repository.AddAsync(bloodBank);

                //var firstName = doctor.FirstName;

                bloodBank.Update("A2", doctor);

                //var newFirstName = doctor.FirstName;

                //Act
                await repository.UpdateAsync(bloodBank);

                //Assert
                Assert.AreEqual(repository.GetAllAsync().Result[0].Types["A2"], 1);
            });
        }
Exemplo n.º 19
0
        public void Delete_DeletesBloodBankAssociationsFromDatabase_BloodBankList()
        {
            //Arrange
            BloodBank testBloodBank = new BloodBank("Puget Sound", "Seattle", "7777777");

            testBloodBank.Save();

            Donor testDonor = new Donor("Tim", "3333333", "08/11/93", "IIIRh+", "Healthy");

            testDonor.Save();

            //Act
            testBloodBank.AddDonor(testDonor);
            testBloodBank.Delete();

            List <BloodBank> resultBloodBankDonors = testDonor.GetBloodBanks();
            List <BloodBank> testBloodBankDonors   = new List <BloodBank> {
            };

            //Assert
            CollectionAssert.AreEqual(testBloodBankDonors, resultBloodBankDonors);
        }
Exemplo n.º 20
0
 public ActionResult EditBloodBank(BloodBankViewModel hospitalViewModel)
 {
     if (ModelState.IsValid)
     {
         try
         {
             BloodBank toUpdate = unitOfWork.BloodBankRepository.GetByID(hospitalViewModel.Id);
             toUpdate.Name      = hospitalViewModel.Name;
             toUpdate.County_Id = hospitalViewModel.County_Id;
             unitOfWork.BloodBankRepository.Update(toUpdate);
             unitOfWork.Save();
             return(RedirectToAction("BloodBanks"));
         }
         catch
         {
             return(View());
         }
     }
     else
     {
         return(View());
     }
 }
Exemplo n.º 21
0
 public void Delete(BloodBank item)
 {
     _context.BloodBank.Remove(item);
     _context.SaveChanges();
 }
Exemplo n.º 22
0
 public async Task Update(BloodBank item)
 {
     _context.Entry(item).State = EntityState.Modified;
     await _context.SaveChangesAsync();
 }
Exemplo n.º 23
0
        //public async Task<IEnumerable<BloodStock>> GetQuantityById(int bankId, string bloodType)
        //{
        //    IQueryable<PointsOfInterest> result = _context.PointsOfInterest.Where(p => p.CityId == cityId && p.Id == patientId);
        //    return await result.FirstOrDefaultAsync();
        //}

        public async Task Add(BloodBank item)
        {
            await _context.BloodBank.AddAsync(item);

            await _context.SaveChangesAsync();
        }
Exemplo n.º 24
0
        public async Task SeedAsync(ApplicationDbContext dbContext, IServiceProvider serviceProvider)
        {
            var userManager                      = serviceProvider.GetRequiredService <UserManager <ApplicationUser> >();
            var hospitalDataRepository           = serviceProvider.GetRequiredService <IDeletableEntityRepository <HospitalData> >();
            var recipientsRepository             = serviceProvider.GetRequiredService <IDeletableEntityRepository <Recipient> >();
            var recipientsHospitalDataRepository = serviceProvider.GetRequiredService <IDeletableEntityRepository <RecipientHospitalData> >();
            var bloodBankRepository              = serviceProvider.GetRequiredService <IDeletableEntityRepository <BloodBank> >();
            var hospitalBloodBankRepository      = serviceProvider.GetRequiredService <IDeletableEntityRepository <HospitalDataBloodBank> >();
            var allUsers     = serviceProvider.GetService <IDeletableEntityRepository <ApplicationUser> >();
            var deletedUsers = allUsers
                               .AllAsNoTrackingWithDeleted()
                               .Where(u => u.IsDeleted == true)
                               .ToList();

            // Seeding hospitals and hospitalsData
            for (int i = 0; i < 6; i++)
            {
                var user = await userManager.FindByEmailAsync($"Hospital{i}@hospital.bg");

                if (user != null)
                {
                    return;
                }

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

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

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

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

                var hospitalData = new HospitalData
                {
                    ApplicationUserId = user.Id,
                    ApplicationUser   = user,
                    Name    = $"Hospital{i}",
                    Contact = new Contact
                    {
                        Email = user.Email,
                        Phone = $"0{i * 5}{i * 6}{i * 7}",
                    },
                    Location = new Location
                    {
                        Country           = "Bulgaria",
                        City              = $"City{i}",
                        AdressDescription = $"Street{i * 3}",
                    },
                };
                await hospitalDataRepository.AddAsync(hospitalData);

                var bloodBank = new BloodBank
                {
                    HospitalDataId = hospitalData.Id,
                };
                await bloodBankRepository.AddAsync(bloodBank);

                var hospitalBloodBank = new HospitalDataBloodBank
                {
                    HospitalId  = hospitalData.Id,
                    BloodBankId = bloodBank.Id,
                };
                await hospitalBloodBankRepository.AddAsync(hospitalBloodBank);

                // Seeding recipients in hospitals
                for (int j = 0; j < 3; j++)
                {
                    Random random    = new Random();
                    var    recipient = new Recipient
                    {
                        HospitalDataId     = hospitalData.Id,
                        FirstName          = $"Recipient{j}",
                        MiddleName         = $"Recipient{j}",
                        LastName           = $"Recipient{j}",
                        Age                = 20 + j,
                        NeededQuantity     = 500,
                        RecipientEmergency = (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),
                    };

                    await recipientsRepository.AddAsync(recipient);

                    var recipientHospitalData = new RecipientHospitalData
                    {
                        HospitalDataId = hospitalData.Id,
                        RecipientId    = recipient.Id,
                    };

                    await recipientsHospitalDataRepository.AddAsync(recipientHospitalData);
                }
            }
        }
Exemplo n.º 25
0
 public void Dispose()
 {
     Patient.DeleteAll();
     Donor.DeleteAll();
     BloodBank.DeleteAll();
 }
Exemplo n.º 26
0
 public void Update(BloodBank bloodBank)
 {
     DbOperations.ExecuteCommand(_context.CONNECTION_STRING, "dbo.BloodBanks_Update", bloodBank.GenerateSqlParametersFromModel().ToArray());
 }
Exemplo n.º 27
0
        public void Save()
        {
            using (PersonaEntities dataContext = new PersonaEntities())
            {
                BloodBank bloodBank = null;
                if (this.BloodBankId == 0)
                {
                    bloodBank = new BloodBank
                    {
                        BloodBankId = this.BloodBankId,
                        BloodBankName = this.BloodBankName,
                        Address = this.Address,
                        TownId = this.TownId,
                        Pincode = this.Pincode,
                        MobileNo1 = this.MobileNo1,
                        MobileNo2 = this.MobileNo2,
                        LandlineNo = this.LandlineNo,
                        FaxNumber = this.FaxNumber,
                        Email = this.Email,
                        Website = this.Website,
                        CreatedOn = this.CreatedOn
                    };

                    dataContext.BloodBanks.AddObject(bloodBank);
                }
                else
                {
                    bloodBank = (from blank in dataContext.BloodBanks where blank.BloodBankId == this.BloodBankId select blank).SingleOrDefault();
                    bloodBank.BloodBankId = this.BloodBankId;
                    bloodBank.BloodBankName = this.BloodBankName;
                    bloodBank.Address = this.Address;
                    bloodBank.TownId = this.TownId;
                    bloodBank.Pincode = this.Pincode;
                    bloodBank.MobileNo1 = this.MobileNo1;
                    bloodBank.MobileNo2 = this.MobileNo2;
                    bloodBank.LandlineNo = this.LandlineNo;
                    bloodBank.FaxNumber = this.FaxNumber;
                    bloodBank.Email = this.Email;
                    bloodBank.Website = this.Website;
                    bloodBank.CreatedOn = this.CreatedOn;

                    dataContext.BloodBanks.ApplyCurrentValues(bloodBank);
                }

                dataContext.SaveChanges();
            }
        }
Exemplo n.º 28
0
 public void Insert(BloodBank bloodBank)
 {
     _context.RepositoryContext.BloodBankRepository.Insert(bloodBank);
 }
        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.º 30
0
        static void Main(string[] args)
        {
            bool      isRunning = true;
            BloodBank bb        = new BloodBank();

            PrintWelcomePageBloodBank();
            Thread.Sleep(1500);
            while (isRunning)
            {
                PrintStartMenuOption();
                switch (Console.ReadKey(true).Key)
                {
                case keyLoggin:
                {
                    int loginStatus = 0;
                    Console.Clear();
                    Console.WriteLine("Skriv in ditt personnummer:");
                    string inputUserID = ReadLineAsString(":>");
                    if (IsDigitsOnly(inputUserID) == false)
                    {
                        Console.WriteLine("Du angav personnummer av fel format.");
                        PauseProgram();
                        break;
                    }
                    Console.WriteLine("Skriv in ditt lösenord:");
                    string inputPassword = ReadLineAsString(":>");
                    try
                    {
                        loginStatus = bb.ValidateUserLogin(inputUserID, inputPassword);
                    }
                    catch
                    {
                        Console.WriteLine("Inloggningen misslyckades. Angav du rätt uppgifter? Är du registrerad?");
                        PauseProgram();
                        break;
                    }
                    if (loginStatus == 1)
                    {
                        bool       donormenu     = true;
                        BloodDonor loggedInDonor = null;

                        while (donormenu)
                        {
                            try
                            {
                                foreach (var loggedInUser in bb.GetUserInfo(inputUserID))
                                {
                                    loggedInDonor = new BloodDonor(loggedInUser.FirstName, loggedInUser.LastName, loggedInUser.ID, loggedInUser.Email, Convert.ToBoolean(loggedInUser.AvailableToDonate), Convert.ToBoolean(loggedInUser.HealthOK), loggedInUser.BloodGroupID, loggedInUser.LatestDonation);
                                }
                            }
                            catch
                            {
                                Console.WriteLine("Något verkar strula med databasen. Är du ansluten till internet?");
                                donormenu = false;
                                PauseProgram();
                            }

                            PrintDonorMenu(loggedInDonor.FirstName, loggedInDonor.LastName);
                            switch (Console.ReadKey(true).Key)
                            {
                            case keyReviseInformation:
                            {
                                Console.Clear();
                                foreach (var loggedInUser in bb.GetUserInfo(inputUserID))
                                {
                                    loggedInDonor.AvailableToDonate = Convert.ToBoolean(loggedInUser.AvailableToDonate);
                                }
                                string available = "ej tillgänglig";
                                if (loggedInDonor.AvailableToDonate == true)
                                {
                                    available = "tillgänglig";
                                }

                                Console.WriteLine($"Din status är satt som {available} för donation.");
                                Console.WriteLine($"Vill du ändra detta? [{keyJa}/{keyNej}]");
                                bool loopAgain = true;
                                while (loopAgain)
                                {
                                    ConsoleKey input = Console.ReadKey(true).Key;
                                    if (input == keyJa)
                                    {
                                        try
                                        {
                                            bb.ChangeDonationStatus(loggedInDonor.AvailableToDonate, loggedInDonor.IDNumber);
                                        }
                                        catch
                                        {
                                            Console.WriteLine("Det gick inte att uppdatera din status. Vänligen försök igen.");
                                            Console.WriteLine("Tryck valfri knapp för att fortsätta.");
                                            Console.WriteLine($"Tryck {keyQuit} för att återgå till menyn.");
                                        }
                                        Console.WriteLine($"\nDin status är nu ändrad.");
                                        Console.WriteLine("\nDu skickas nu tillbaka till menyn.");
                                        Thread.Sleep(3000);
                                        loopAgain = false;
                                    }
                                    else if (input == keyNej)
                                    {
                                        Console.WriteLine("\nDu skickas nu tillbaka till menyn.");
                                        Thread.Sleep(1500);
                                        loopAgain = false;
                                    }
                                }
                                break;
                            }

                            case keyLoggout:
                            {
                                donormenu = false;
                                break;
                            }
                            }
                        }
                    }

                    else if (loginStatus == 2)
                    {
                        Staff loggedInStaff = null;
                        try
                        {
                            foreach (var loggedInUser in bb.GetUserInfo(inputUserID))
                            {
                                loggedInStaff = new Staff(loggedInUser.FirstName, loggedInUser.LastName, loggedInUser.ID, loggedInUser.Title);
                            }
                        }
                        catch
                        {
                            Console.WriteLine("Något verkar strula med databasen. Är du ansluten till internet?");
                            break;
                        }


                        bool staffmenu = true;
                        while (staffmenu)
                        {
                            PrintStaffMenuOption(loggedInStaff.FirstName, loggedInStaff.LastName, loggedInStaff.Title);
                            switch (Console.ReadKey(true).Key)
                            {
                            case keyCheckAmountBlood:
                            {
                                Console.Clear();
                                Console.WriteLine("Tillgängligt blod");
                                Console.WriteLine("-------------------------------");
                                try
                                {
                                    foreach (Donation donation in bb.StoredBlood())
                                    {
                                        BloodGroup bloodGroup = (BloodGroup)donation.Bloodgroup;

                                        Console.WriteLine($"{donation.AmountOfBlood} Enheter : Blodgrupp {bloodGroup}");
                                    }
                                }
                                catch
                                {
                                    Console.WriteLine("Kunde inte hämta data från databasen");
                                }
                                PauseProgram();
                                break;
                            }

                            case keyRegisterNewDonation:
                            {
                                bool loopAgain = true;
                                while (loopAgain)
                                {
                                    Console.Clear();
                                    Console.Write("Antal enheter: ");
                                    int amountOfBlood = ReadStringAsInt(":> ", 1, 10);

                                    Console.Write("Donator-ID (12 siffror): ");
                                    string   donorID  = ReadLineAsStringOfDidgits(12, ":> ");
                                    Donation donation = new Donation(amountOfBlood, donorID, loggedInStaff.IDNumber);
                                    try
                                    {
                                        bb.AddDonation(donation);
                                        Console.WriteLine("\nDonationen är nu registrerad!");
                                        loopAgain = false;
                                    }
                                    catch
                                    {
                                        Console.WriteLine("Nu gick det lite fel med donationen!");
                                        Console.WriteLine("Tryck valfri knapp för att fortsätta.");
                                        Console.WriteLine($"Tryck {keyQuit} för att återgå till menyn.");
                                        ConsoleKey input = Console.ReadKey(true).Key;
                                        if (input == keyQuit)
                                        {
                                            loopAgain = false;
                                        }
                                    }
                                    PauseProgram();
                                }
                                break;
                            }

                            case keyRequestBloodDonation:
                            {
                                Console.Clear();
                                Console.WriteLine("Vilken Blodgrupp behövs det mer av?");
                                PrintBloodGroupMenu();
                                int        bloodgroup = BloodGroupChoice();
                                BloodGroup type       = (BloodGroup)bloodgroup;
                                try
                                {
                                    foreach (BloodDonor bloodDonor in bb.GetListForRequestDonation(bloodgroup))
                                    {
                                        Console.WriteLine($"Till: {bloodDonor.Email}, Hej {bloodDonor.FirstName}!, vi behöver mer blod av just din blodgrupp, blodgrupp: {type}");
                                    }
                                }
                                catch
                                {
                                    Console.WriteLine("Kunde inte hitta någon med den valda blodgruppen.");
                                }

                                PauseProgram();
                                break;
                            }

                            case keyRegisterNewStaffAccount:
                            {
                                Console.WriteLine("Registrera personal:");
                                bool loopAgain = true;
                                while (loopAgain)
                                {
                                    Console.WriteLine("Skriv in personal förnamn");
                                    string staffFirstName = ReadLineAsString(":> ");
                                    Console.WriteLine("Skriv in personal efternamn");
                                    string staffLastName = ReadLineAsString(":> ");
                                    Console.WriteLine("Skriv in personal lösenord");
                                    string staffPassword = ReadLineAsString(":> ");
                                    Console.WriteLine("Skriv in personal IDnummer, 12 siffror");
                                    string staffiDNumber = ReadLineAsStringOfDidgits(12, ":> ");
                                    Console.WriteLine("Skriv in personal jobbtitel");
                                    string staffTitle = ReadLineAsString(":> ");

                                    User newStaff = new Staff(staffFirstName, staffLastName, staffiDNumber, staffTitle, staffPassword);
                                    try
                                    {
                                        bb.AddUser(newStaff);
                                        loopAgain = false;
                                    }
                                    catch
                                    {
                                        Console.WriteLine("Nu gick det lite fel!");
                                        Console.WriteLine("Tryck valfri knapp för att fortsätta.");
                                        Console.WriteLine($"Tryck {keyQuit} för att återgå till menyn.");
                                        ConsoleKey input = Console.ReadKey(true).Key;
                                        if (input == keyQuit)
                                        {
                                            loopAgain = false;
                                        }
                                    }
                                    Console.WriteLine("Personalen är registrerad.");
                                }
                                PauseProgram();
                                break;
                            }

                            case keyLoggout:
                            {
                                staffmenu = false;
                                break;
                            }
                            }
                        }
                    }
                    else if (loginStatus == 0)
                    {
                        Console.Clear();
                        Console.WriteLine("ID-nummer eller lösenord är fel");
                        PauseProgram();
                        break;
                    }
                    break;
                }

                case keyCreateAccount:
                {
                    Console.Clear();
                    if (QuestionHealthForm())
                    {
                        Console.Clear();
                        PrintRequiredToDonate();
                        Thread.Sleep(3000);

                        bool healthOK          = true;
                        bool availableToDonate = true;
                        bool loopAgain         = true;
                        while (loopAgain)
                        {
                            Console.Clear();
                            Console.Write("Skriv in ditt personnummer, 12 siffror (YYYYMMDDXXXX): ");
                            string idNumber = ReadLineAsStringOfDidgits(12, ":> ");
                            Console.Write("\nSkriv in förnamn");
                            string firstName = ReadLineAsString(":> ");
                            Console.Write("\nSkriv in efternamn");
                            string lastName = ReadLineAsString(":> ");
                            Console.WriteLine("\nVilken blodgrupp tillhör du (1-4): ");
                            PrintBloodGroupMenu();
                            int bloodGroup = BloodGroupChoice();
                            Console.WriteLine($":> {bloodGroup}");
                            BloodGroup bloodtype = (BloodGroup)bloodGroup;
                            Console.Write("\nSkriv in din email: ");
                            string eMail = ReadLineAsString(":> ");
                            Console.Write("\nVälj ett lösenord: ");
                            string passWord = ReadLineAsString(":> ");

                            Console.Clear();
                            Console.WriteLine("Du har skrivit in följande:");
                            Console.WriteLine($"Personnummer: {idNumber}\nFörnamn: {firstName}\nEfternamn: {lastName}\nBlodgrupp: {bloodtype}\nEmail: {eMail}\nLösenord: {passWord}");
                            Console.WriteLine($"Stämmer Uppgifterna? [{keyJa}/{keyNej}]");
                            ConsoleKey correctInformation = Console.ReadKey(true).Key;
                            if (correctInformation == keyJa)
                            {
                                BloodDonor newDonor = new BloodDonor(firstName, lastName, idNumber, eMail, availableToDonate, healthOK, bloodGroup, passWord);
                                try
                                {
                                    bb.AddUser(newDonor);
                                }
                                catch
                                {
                                    Console.WriteLine("Kunde inte lägga till användaren.");
                                }

                                loopAgain = false;
                            }
                            else if (correctInformation == keyNej)
                            {
                                Console.WriteLine("\nAjdå, då får du fylla i alla uppgifterna igen..    :) \n");
                                Console.WriteLine("Tryck valfri knapp för att fortsätta.");
                                Console.WriteLine($"Tryck {keyQuit} för att återgå till menyn.");
                                ConsoleKey input = Console.ReadKey(true).Key;
                                if (input == keyQuit)
                                {
                                    loopAgain = false;
                                }
                            }
                        }
                        PauseProgram();
                    }
                    else
                    {
                        PrintNotRequiredEnough();
                        Thread.Sleep(3000);
                        Console.
                        Clear();
                        Console.WriteLine("Du skickas nu tillbaka till startmenyn");
                        Thread.Sleep(3000);
                    }
                    break;
                }

                case keyQuit:
                {
                    Console.WriteLine("\nTack för att du besökte oss, Välkommen Åter!");
                    Thread.Sleep(1000);
                    isRunning = false;
                    break;
                }
                }
            }
        }
Exemplo n.º 31
0
 public void Update(BloodBank bloodBank)
 {
     _context.RepositoryContext.BloodBankRepository.Update(bloodBank);
 }