public HttpResponseMessage CreateAppointment(AppointmentModel model,
                                                     [ValueProvider(typeof(HeaderValueProviderFactory <string>))]
                                                     string accessToken)
        {
            return(this.ExecuteOperationAndHandleExceptions(() =>
            {
                var context = new TasksManagerDbContext();
                var meUser = this.GetUserByAccessToken(accessToken, context);
                this.ValidateAppointment(model);
                var appointmentEntity = model.ToEntity();
                appointmentEntity.Owner = meUser;
                appointmentEntity.State = context.States.FirstOrDefault(st => st.Value == "upcomming");

                meUser.Appointments.Add(appointmentEntity);
                context.SaveChanges();
                var responseModel = new AppointmentCreatedModel()
                {
                    Id = appointmentEntity.Id,
                    Owner = appointmentEntity.Owner.Username
                };
                var response = this.Request.CreateResponse(HttpStatusCode.Created, responseModel);
                return response;
            }));
        }