public ActionResult AddService(MedicalPlaceProfileViewModel model)
 {
     if (ModelState.IsValid)
     {
         Service service = new Service()
         {
             Name        = model.NewService.Name,
             CategoryID  = model.NewService.CategoryID,
             Cost        = model.NewService.Cost,
             Description = model.NewService.Description,
             ProviderID  = model.NewService.ProviderID
         };
         ServiceBusinessLayer.AddService(service);
     }
     return(RedirectToAction("ProfilePage", new { id = model.NewService.ProviderID }));
 }
 public ActionResult AddCareUnit(MedicalPlaceProfileViewModel model)
 {
     if (ModelState.IsValid)
     {
         CareUnit careunit = new CareUnit()
         {
             Name               = model.NewCareUnit.Name,
             Description        = model.NewCareUnit.Description,
             Cost               = model.NewCareUnit.Cost,
             LastUpdate         = model.NewCareUnit.LastUpdate,
             CareUnitTypeID     = model.NewCareUnit.CareUnitTypeID,
             AvailableRoomCount = model.NewCareUnit.AvailableRoomCount,
             ProviderID         = model.NewCareUnit.ProviderID
         };
         CareUnitBusinessLayer.AddCareUnit(careunit);
     }
     return(ProfilePage(model.MedicalPlaceID));
 }
 public ActionResult UpdateSchedule(MedicalPlaceProfileViewModel model)
 {
     if (ModelState.IsValid)
     {
         ServiceViewModel serviceModel = model.Services.First();
         Service          service      = new Service()
         {
             ID          = serviceModel.ID,
             Name        = serviceModel.Name,
             CategoryID  = serviceModel.CategoryID,
             Cost        = serviceModel.Cost,
             Description = serviceModel.Description,
             ProviderID  = serviceModel.ProviderID
         };
         ServiceBusinessLayer.UpdateService(service);
     }
     return(ProfilePage(model.Services.First().ProviderID));
 }
        public ActionResult ProfilePage(long id)
        {
            var medicalPlace = MedicalPlaceBusinessLayer.GetMedicalPlace(id);
            MedicalPlaceProfileViewModel model = new MedicalPlaceProfileViewModel()
            {
                MedicalPlaceID    = medicalPlace.ID,
                Services          = new List <ServiceViewModel>(),
                CareUnits         = new List <CareUnitViewModel>(),
                ServiceCategories = ServiceBusinessLayer.GetServiceCategories(),
                CareUnitTypes     = CareUnitBusinessLayer.GetCareUnitTypes(),
                IsAdmin           = medicalPlace.Admins.Select(m => m.Id).Contains(User.Identity.GetUserId <long>()),
                MedicalPlace      = medicalPlace,
                IsCurrentPlace    = Request.Cookies["placeInfo"] != null && Convert.ToInt64(Request.Cookies["placeInfo"].Values["id"]) == id?true : false,
            };


            foreach (var service in medicalPlace.Services)
            {
                var groupedSlots        = service.WorkSlots.GroupBy(slot => new { slot.StartTime, slot.EndTime });
                ServiceViewModel smodel = new ServiceViewModel()
                {
                    ID          = service.ID,
                    Name        = service.Name,
                    Cost        = service.Cost ?? 0,
                    Description = service.Description,
                    CategoryID  = service.CategoryID,
                    ProviderID  = service.ProviderID ?? 0,
                    WorkSlots   = new List <WorkSlotViewModel>()
                };
                foreach (var element in groupedSlots)
                {
                    WorkSlotViewModel wmodel = new WorkSlotViewModel();
                    wmodel.StartTime = element.Key.StartTime ?? TimeSpan.Zero;
                    wmodel.EndTime   = element.Key.EndTime ?? TimeSpan.Zero;
                    wmodel.ServiceID = service.ID;
                    foreach (var day in element)
                    {
                        switch (day.DayName)
                        {
                        case "Saturday":
                            wmodel.IsSaturday = true;
                            break;

                        case "Sunday":
                            wmodel.IsSunday = true;
                            break;

                        case "Monday":
                            wmodel.IsMonday = true;
                            break;

                        case "Tuesday":
                            wmodel.IsTuesday = true;
                            break;

                        case "Wednesday":
                            wmodel.IsWednesday = true;
                            break;

                        case "Thursday":
                            wmodel.IsThursday = true;
                            break;

                        case "Friday":
                            wmodel.IsFriday = true;
                            break;
                        }
                    }
                    smodel.WorkSlots.Add(wmodel);
                }
                model.Services.Add(smodel);
            }

            foreach (var careunit in medicalPlace.CareUnits)
            {
                CareUnitViewModel cmodel = new CareUnitViewModel()
                {
                    ID                 = careunit.ID,
                    Name               = careunit.Name,
                    CareUnitTypeID     = careunit.CareUnitTypeID,
                    AvailableRoomCount = careunit.AvailableRoomCount ?? 0,
                    Cost               = careunit.Cost,
                    ProviderID         = careunit.ProviderID,
                    Description        = careunit.Description,
                    LastUpdate         = careunit.LastUpdate
                };
                model.CareUnits.Add(cmodel);
            }

            return(View("ProfilePage", model));
        }