/*Skapar en ny relation mellan branscher, där branchA är branschen som användaren väljer först och * branchB är den bransch som användaren väljer bland relevanta förslagen*/ public void CreateBranchRelation(int branchA, int branchB) { try { //Hämtar första branschen och kontrollerar att den är branchA Branch fromBranch = ApplicationDbContext.Branches.Include(x => x.BranchRelations).Single(f => f.BranchId == branchA); //Om branchA inte finns skapas det en ny relation som kan göras mot branchA if (fromBranch.BranchRelations == null) { fromBranch.BranchRelations = new List <BranchRelation>(); } /*Om det inte finns en tidigare relation mellan branchA och branchB skapas det en ny relation, och 1 poäng * tilldelas efter att användaren har valt branchA efter branchB som sedan sparas i databasen*/ if (fromBranch.BranchRelations.Where(x => x.branchBId2 == branchB.ToString()).Count() == 0) { BranchRelation branchRelation = new BranchRelation(); branchRelation.branchBId2 = branchB.ToString(); branchRelation.CountClick = 1; ApplicationDbContext.Branches.Single(x => x.BranchId == branchA).BranchRelations.Add(branchRelation); ApplicationDbContext.SaveChanges(); } /*Om det finns en tidigare relation mellan branscherna kommer det att tilldelas 1 poäng för varje gång man * väljer samma bransch A och därefter samma bransch B*/ else { AddClickToBranchRelation(branchA, branchB); } ApplicationDbContext.SaveChanges(); } catch (Exception e) { throw e; } }
//Hämtar antalet poäng som den valda tjänsten har fått private async Task <List <ClickOfService> > GetClickOfServices(List <DistanceScoreAndBookingSystem> distanceScoreAndBookingSystem, Service selectedService, int totClick) { BranchRepository branchRepository = new BranchRepository(ApplicationDbContext); List <ClickOfService> clickOfService = new List <ClickOfService>(); foreach (var item in distanceScoreAndBookingSystem) { //Distanspoäng + baspoäng double counter = item.distanceScore + 5; foreach (var service in item.bookingSystemOfInterest.bookingSystem.Services) { double score = 1; if (selectedService.Branch.BranchRelations.Any(y => y.branchBId2 == service.Branch.BranchId.ToString())) { //Skapar en branschrelation med den valda tjänsten BranchRelation branchRelation = selectedService.Branch.BranchRelations.Single(x => x.branchBId2 == service.Branch.BranchId.ToString()); //Räknar antalet bokningar(klick för att boka) int click = branchRelation.CountClick; score += (double)click / totClick; } ClickOfService aObject = new ClickOfService(); aObject.service = service; aObject.score = score * counter; clickOfService.Add(aObject); } } return(await Task.FromResult(clickOfService)); }
//Uppdaterar en relation med ett till klick mellan bransch A och B. public void AddClickToBranchRelation(int branchA, int branchB) { //Hämtar bransch A, som är den första valda branschen i bokningsflödet. Branch fromBranch = ApplicationDbContext.Branches.Include(x => x.BranchRelations).Single(x => x.BranchId == branchA); //Hämtar bransch B, baserat på den tidigare valda branschen. BranchRelation branchRelation = fromBranch.BranchRelations.Single(x => Int32.Parse(x.branchBId2) == branchB); //Lägger till ett klick och sparar i databasen branchRelation.CountClick++; ApplicationDbContext.SaveChanges(); }