public ResponseData CreateRecurringSchedule(RecurringSchedulePostModel model)
 {
     try
     {
         string userId = GlobalMethods.GetUserID(User);
         if (string.IsNullOrWhiteSpace(userId))
         {
             return(new ResponseData {
                 Status = false, Message = "Unauthorized Access"
             });
         }
         return(_doctorService.CreateRecurringScheduleById(userId, model));
     }
     catch (Exception ae)
     {
         return(new ResponseData {
             Status = false, Message = ae.Message.ToString()
         });
     }
 }
        public ResponseData CreateRecurringScheduleById(string DoctorId, RecurringSchedulePostModel model)
        {
            using (IDbConnection con = Connection)
            {
                string message = string.Empty;
                try
                {
                    con.Open();
                    string sql = @"select * from DoctorRecurringSchedules where DoctorId = @userId and
   RecordedAt between DATEADD(month, -1, GETDATE()) and GETDATE()";
                    //                    string sql = @"select * from DoctorRecurringSchedules where DoctorId=@userId and FromTime between @From and @To
                    //or ToTime between @From and @To";
                    var check = con.Query <DoctorRecurringSchedule>(sql, new
                    {
                        @From   = model.FromTime,
                        @To     = model.ToTime,
                        @userId = DoctorId
                    }).ToList();
                    if (check.Count > 0)
                    {
                        List <string> obj = new List <string>();
                        //already scheduled
                        foreach (var item in check)
                        {
                            foreach (PropertyInfo pi in item.GetType().GetProperties())
                            {
                                if (pi.PropertyType == typeof(bool))
                                {
                                    bool value = (bool)pi.GetValue(item);
                                    if (value)
                                    {
                                        obj.Add((pi.Name.Remove(0, 2)) + "day");
                                    }
                                }
                            }
                            message = string.Join(",", obj.ToArray()) + " are already been scheduled at this timing";
                        }
                        return(new ResponseData {
                            Status = true, Message = message
                        });
                    }
                    else
                    {
                        //create new schedule
                        string query = @"Insert into DoctorRecurringSchedules Values(@DoctorId,@FromTime,@ToTime,@IsMon,@IsTues,@IsWednes,@IsThurs,@IsFri,@IsSatur,@IsSun,@RecordedAt)SELECT SCOPE_IDENTITY()";

                        for (int i = 0; i < model.Weekdays.Length; i++)
                        {
                            int insertedId = con.Query <int>(query, new { DoctorId, model.FromTime, model.ToTime, model.Weekdays[i].IsMon, model.Weekdays[i].IsTues, model.Weekdays[i].IsWednes, model.Weekdays[i].IsThurs, model.Weekdays[i].IsFri, model.Weekdays[i].IsSatur, model.Weekdays[i].IsSun, @RecordedAt = DateTime.Now }).FirstOrDefault();
                        }

                        return(new ResponseData {
                            Status = true, Message = "Schedule has been created."
                        });
                    }
                }
                catch (Exception ae)
                {
                    return(new ResponseData {
                        Status = false, Message = ae.Message.ToString()
                    });
                }
            }
        }