public ActionResult EditAppointment(EditAppointmentViewModel viewModel)
        {
            if (appointmentsService.IsValidModelState())
            {
                Appointment dbAppointment = appointmentsService.GetById(viewModel.AppointmentId);
                dbAppointment.StartDateTime = viewModel.StartDateTime;
                double summedMinutes = 0;
                dbAppointment.Activities.Clear();
                List <Activity> activities = activitiesService.GetAll(a => viewModel.CheckedRows.Contains(a.ActivityId)).ToList();
                foreach (Activity activity in activities)
                {
                    summedMinutes += activity.Duration;
                    dbAppointment.Activities.Add(activity);
                }

                DateTime startDateTime = viewModel.StartDateTime;
                dbAppointment.StartDateTime = startDateTime;
                TimeSpan summedDuration = TimeSpan.FromMinutes(summedMinutes);
                DateTime endDateTime    = startDateTime.Add(summedDuration);
                dbAppointment.EndDateTime = endDateTime;
                dbAppointment.UserId      = LoginUserSession.Current.UserId;
                bool hasSavedSuccessfully = appointmentsService.Edit(dbAppointment);
                if (hasSavedSuccessfully)
                {
                    TempData["SuccessfullMessage"] = "Appointment added successfully";
                    return(RedirectToAction("ViewAppointments", "Appointments"));
                }
                else
                {
                    TempData["ErrorMessage"] = "There was a server error while adding the appointment.";
                    return(RedirectToAction("Index", "Home"));
                }
            }
            return(View(viewModel));
        }