Beispiel #1
0
        public async Task <IHttpActionResult> GetBookingSystems()
        {
            BookingSystemsViewModel list = new BookingSystemsViewModel();

            //Anropar GetAll() metoden från repository för att hämta alla bokningssytem
            list.bookingSystems = await uw.BookingSystems.GetAll();

            if (list == null)
            {
                return(NotFound());
            }
            return(Ok(list));
        }
Beispiel #2
0
        public async Task <IHttpActionResult> GetRelevantBookingSystem(int bookingSystemId, int serviceId, int bookingId)
        {
            try {
                /*Tilldelar variabeln ett värde på bokningssystem med relevanta bokningssystem med endast tillgängliga tider
                 * genom att anropa på metoden GetRelevantBookingSystemOnlyWithAvailableTimes() från repository*/
                var onlyWithAvailableTimes = await uw.BookingSystems.GetRelevantBookingSystemOnlyWithAvailableTimes(bookingSystemId, serviceId, bookingId);

                BookingSystemsViewModel bsVM = new BookingSystemsViewModel();
                bsVM.bookingSystems = onlyWithAvailableTimes;
                return(Ok(bsVM));
            } catch (Exception) {
                throw;
            }
        }
        //Returnerar alla bokningsystem med ett api-anrop
        public async Task <ActionResult> Index()
        {
            BookingSystemsViewModel bsVM = null;
            HttpClient client            = new HttpClient();
            var        result            = client.GetAsync("http://localhost:55341/api/GetBookingSystems").Result;

            if (result.IsSuccessStatusCode)
            {
                bsVM = await result.Content.ReadAsAsync <BookingSystemsViewModel>();
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Server error. Please contact administrator.");
            }

            return(View(bsVM));
        }
        //Returnerar vilka bokningsystem som finns i närområdet efter att man har bokat en tjänst
        public async Task <ActionResult> RelevantBookingSystems(int bookingSystemId, int serviceId, int bookingId, int?branchAId)
        {
            BookingSystemServicesViewModel bsSVM = null;
            HttpClient client1 = new HttpClient();

            //Gör ett api-anrop för att hämta bokningssystemet
            string url1    = "http://localhost:55341/api/GetBookingSystem/" + bookingSystemId.ToString();
            var    result1 = client1.GetAsync(url1).Result;

            if (result1.IsSuccessStatusCode)
            {
                bsSVM = await result1.Content.ReadAsAsync <BookingSystemServicesViewModel>();
            }
            //Tilldelar variabeln värdet på det valda bokningssystemet
            var selectedBookingSystem = bsSVM.bookingSystem;

            if (selectedBookingSystem == null || !selectedBookingSystem.Services.Any(x => x.ServiceId == serviceId))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            BookingSystemsViewModel bsVM = null;
            HttpClient client            = new HttpClient();

            //Gör ett api-anrop för att hämta relevantabokningssystem
            string url    = "http://localhost:55341/api/GetRelevantBookingSystem/" + bookingSystemId.ToString() + "/" + serviceId.ToString() + "/" + bookingId.ToString();
            var    result = client.GetAsync(url).Result;

            if (result.IsSuccessStatusCode)
            {
                bsVM = await result.Content.ReadAsAsync <BookingSystemsViewModel>();
            }

            var orderedByDistance = bsVM.bookingSystems;

            BookingsWithDistanceViewModel bWDVM = new BookingsWithDistanceViewModel();

            //Om man nyligen har bokat en tjänst läggs det till ett klick på relationen eller så skapas den
            if (branchAId != null)
            {
                bWDVM.branchAId = branchAId ?? default(int);
            }
            else
            {
                bWDVM.branchAId = selectedBookingSystem.Services.Single(x => x.ServiceId == serviceId).Branch.BranchId;
            }

            //Instansierar en lista på bokningssystem
            List <BookingSystemAndDistanceViewModel> listOfBookingSystems = new List <BookingSystemAndDistanceViewModel>();

            foreach (var item in orderedByDistance)
            {
                BookingSystemAndDistanceViewModel pairedObject = new BookingSystemAndDistanceViewModel();
                pairedObject.BookingSystem = item;
                string     list3   = "";
                HttpClient client3 = new HttpClient();

                //Gör ett api-anrop för att hämta det först valda bokningssystemet och bokningssystem i närområdet.
                var result3 = client3.GetAsync("http://localhost:55341/api/GetBookingSystem/" + selectedBookingSystem.BookingSystemId + "/" + item.BookingSystemId).Result;
                if (result3.IsSuccessStatusCode)
                {
                    list3 = await result3.Content.ReadAsStringAsync();
                }

                //Beräknar distansen mellan bokningsystemen
                list3 = list3.Replace('.', ',');
                double distance = double.Parse(list3);
                pairedObject.Distance    = Math.Round(distance);
                pairedObject.Latitude    = pairedObject.BookingSystem.Latitude;
                pairedObject.Longitude   = pairedObject.BookingSystem.Longitude;
                pairedObject.CompanyName = pairedObject.BookingSystem.CompanyName;
                pairedObject.Id          = pairedObject.BookingSystem.BookingSystemId;
                listOfBookingSystems.Add(pairedObject);
            }
            bWDVM.SelectedBookingSystem = selectedBookingSystem;
            bWDVM.BookingsWithDistance  = listOfBookingSystems;
            return(PartialView(bWDVM));
        }