public RequestVM GetByID(int id)
        {
            var x = _context.Requests.Include(r => r.User).ThenInclude(r => r.CarModel).Where(r => r.RequestID == id).SingleOrDefault();



            var model = new Data.ViewModel.RequestVM()
            {
                RequestID        = x.RequestID,
                DateOfRequest    = x.DateOfRequest,
                Date             = x.DateOfRequest.Day + "." + x.DateOfRequest.Month + "." + x.DateOfRequest.Year,
                UserID           = x.UserID,
                UserNameLastName = x.User.FirstName + " " + x.User.LastName,
                UserCar          = x.User.CarModel.CarModelName,
                CarServiceID     = x.CarServiceID,
                StatusID         = x.RequestStatusID,
            };
            var ServicesList = _context.requestServices.Include(s => s.Service).Where(s => s.RequestID == x.RequestID).ToList();

            model.ListOfRequestedServices = new List <Data.ViewModel.RequestVM.Service>();
            foreach (var s in ServicesList)
            {
                model.ListOfRequestedServices.Add(new RequestVM.Service()
                {
                    serviceID    = s.ServiceID,
                    ServiceName  = s.Service.ServiceName,
                    ServicePrice = s.Service.ServicePrice
                });
            }


            return(model);
        }
        private async void frmScheduleDetails_Load(object sender, EventArgs e)
        {
            scheduleVM = await _scheduleService.GetById <Data.ViewModel.ScheduleVM>(_scheduleID);

            txtScheduleDate.Text          = scheduleVM.Date;
            txtClient.Text                = scheduleVM.User + " | " + scheduleVM.UserCar;
            txtStatusSchedule.Text        = scheduleVM.Status;
            txtIsPaidSchedule.Text        = scheduleVM.isPaidString;
            btnDeleteSchedule.Visible     = false;
            LabelTotalPrice.Visible       = false;
            txtTotalPrice.Text            = "";
            btnShowPaymentDetails.Visible = false;
            if (scheduleVM.offerCreated)
            {
                btnSendOffer.Enabled   = false;
                txtIsOfferSent.Visible = true;
                //cmbPartsSubCategories.Visible = false;

                btnAddToOfferList.Enabled = false;

                //txtSelectedCategory.Visible = false;
                //txtSubCategoryName.Visible = false;
                //txtQuantityNeeded.Visible = false;
                //txtNeededQuantity.Visible = false;
                txtNeededQuantity.ReadOnly = true;
                txtNeededQuantity.Enabled  = false;
            }
            else
            {
                cmbPartsSubCategories.Visible = true;
                btnSendOffer.Visible          = true;
                txtIsOfferSent.Visible        = false;
                btnAddToOfferList.Visible     = true;

                txtSelectedCategory.Visible = true;
                txtSubCategoryName.Visible  = true;
                txtQuantityNeeded.Visible   = true;
                txtNeededQuantity.Visible   = true;
            }
            if (scheduleVM.ScheduleStatusID == 2)
            {
                btnFinishSchedule.Visible = false;
                btnDeleteSchedule.Visible = true;

                var ticketList = await _ticketService.Get <List <Data.Model.Ticket> >(new TicketSearchRequest()
                {
                    ScheduleID = scheduleVM.ScheduleID
                });

                if (ticketList.Count() > 0)
                {
                    var ticketModel = ticketList.First();
                    if (ticketModel != null)
                    {
                        txtLabelCreateTicket.Text      = "Već ste poslali online račun klijentu!";
                        txtLabelCreateTicket.BackColor = System.Drawing.Color.Green;
                        btnCreateOnlineTicket.Enabled  = false;
                    }
                }

                if (scheduleVM.isPaid)
                {
                    btnSetPaymentDetails.Enabled  = false;
                    btnShowPaymentDetails.Visible = true;
                }


                var listOffer = await _offerService.Get <List <Data.ViewModel.OffersVM> >(new OfferSearchRequest()
                {
                    ScheduleID = scheduleVM.ScheduleID
                });

                if (listOffer.Count() > 0)
                {
                    OfferVM = listOffer.First();
                }
                if (OfferVM != null)
                {
                    if (OfferVM.partsSelected)
                    {
                        OfferItemsVM = await _offerItemsService.GetById <Data.ViewModel.OfferItemsVM>(OfferVM.OfferID);
                    }
                }
                RequestVM = await _requestClientService.GetById <Data.ViewModel.RequestVM>(scheduleVM.RequestID);

                double UkupnaCijena = 0;
                foreach (var x in RequestVM.ListOfRequestedServices)
                {
                    UkupnaCijena += x.ServicePrice;
                }
                if (OfferItemsVM != null)
                {
                    if (OfferItemsVM.listOfParts.Count() > 0)
                    {
                        foreach (var i in OfferItemsVM.listOfParts)
                        {
                            UkupnaCijena += i.CarPartPrice * i.QuantityNeeded;
                        }
                    }
                }
                LabelTotalPrice.Visible = true;
                txtTotalPrice.Text      = UkupnaCijena.ToString() + " KM";
                ScheduleSecondUpdateRequest req = new ScheduleSecondUpdateRequest()
                {
                    updateTotalPrice = true,
                    TotalPrice       = UkupnaCijena
                };
                await _scheduleSecondService.Update <Data.Model.Schedule>(scheduleVM.ScheduleID, req);
            }
            scheduleVM.itemsforSelect.Insert(0, new Data.Model.CarPartSubCategory()
            {
                SubCategoryID   = 0,
                SubCategoryName = "Odaberi podkategoriju dijela"
            });
            cmbPartsSubCategories.ValueMember   = "SubCategoryID";
            cmbPartsSubCategories.DisplayMember = "SubCategoryName";
            cmbPartsSubCategories.DataSource    = scheduleVM.itemsforSelect;

            dgvSelectedSubCategories.AutoGenerateColumns = false;
            dgvSelectedSubCategories.DataSource          = scheduleVM.selectedSubCategories;
        }