public IHttpActionResult CreateBooking(BookingApi booking)
        {
            try
            {
                if (booking != null)
                {
                    booking.StartTime = new DateTime(booking.StartTime.Year, booking.StartTime.Month, booking.StartTime.Day, booking.StartTime.Hour, booking.StartTime.Minute, booking.StartTime.Second);
                    booking.EndTime = new DateTime(booking.EndTime.Year, booking.EndTime.Month, booking.EndTime.Day, booking.EndTime.Hour, booking.EndTime.Minute, booking.EndTime.Second);

                    var newBooking = Mapper.Map<BookingApi, BookingDto>(booking);

                    newBooking.Specialist = Services.Users.GetUserById(booking.SpecialistId);
                    newBooking.Customer = Services.Users.GetUserById(booking.CustomerId);
                    newBooking.Specialization = newBooking.Specialist.Profile.Specializations.FirstOrDefault();
                    newBooking.IsApplyNoMinimumCharge = newBooking.Specialist.Profile.Specializations.FirstOrDefault().IsApplyNoMinimumCharge;
                    if (BookingType.ASAP.Equals(newBooking.Type))
                    {
                        newBooking.StartTime = DateTime.UtcNow;
                        newBooking.EndTime = DateTime.UtcNow;
                    }

                    Services.Booking.Create(newBooking);

                    // Reload alert and booking list
                    NotifyHelper.ReloadAlert(newBooking.Specialist.UserName);
                    NotifyHelper.ReloadAlert(newBooking.Customer.UserName);

                    return Json(new { Success = true });
                }
                else
                {
                    Log.Error("Create booking false: Booking is null");
                    return Json(new { Success = false });
                }
            }
            catch (Exception e)
            {
                Log.Error("Create booking CusId: " + booking.CustomerId + " - SpecId: " + booking.SpecialistId, e);
                return Json(new { Success = false });
            }
        }
 public IHttpActionResult UpdateBookingStatus(BookingApi booking)
 {
     bool isSuccess = false;
     bool isSpecialist = CurrentUser.Role.Equals(Role.Specialist);
     isSuccess = BookingHelper.UpdateBookingStatus(booking.Id, booking.Status, isSpecialist, Services);
     return Json(new { Success = isSuccess });
 }
 public IHttpActionResult RescheduleBooking(BookingApi rescheduleBooking)
 {
     //new date tiem because mobile send json with datetime contain kind "UTC", server will convert error
     rescheduleBooking.StartTime = new DateTime(rescheduleBooking.StartTime.Year, rescheduleBooking.StartTime.Month, rescheduleBooking.StartTime.Day, rescheduleBooking.StartTime.Hour, rescheduleBooking.StartTime.Minute, rescheduleBooking.StartTime.Second);
     rescheduleBooking.EndTime = new DateTime(rescheduleBooking.EndTime.Year, rescheduleBooking.EndTime.Month, rescheduleBooking.EndTime.Day, rescheduleBooking.EndTime.Hour, rescheduleBooking.EndTime.Minute, rescheduleBooking.EndTime.Second);
     bool isSuccess = false;
     isSuccess = BookingHelper.RescheduleBooking(rescheduleBooking.Id, rescheduleBooking.StartTime.ConvertToUTCTimeZone(), rescheduleBooking.EndTime.ConvertToUTCTimeZone(), rescheduleBooking.IsSpecialist, Services);
     return Json(new { Success = isSuccess });
 }