public JsonResult AddScheduleMealSet(int mealSetID, int scheduleID, bool isDayOn)
        {
            //if isDayOn = true, just insert into ScheduleMealSetDetail
            // else open transaction and set isDayOn of schedule = true
            if (isDayOn)
            {
                try
                {
                    ScheduleMealSetDetailTableAdapter scheduleMealSetDetailTA = new ScheduleMealSetDetailTableAdapter();

                    DataTable dt = scheduleMealSetDetailTA.GetDataByMealSetIDScheduleID(mealSetID, scheduleID);
                    if (dt.Rows.Count != 0)
                    {
                        return Json("duplicate", JsonRequestBehavior.AllowGet);
                    }

                    DateTime now = DateTime.Now;
                    string newScheduleMealSetDetailIDStr = scheduleMealSetDetailTA.InsertScalar(mealSetID, scheduleID, now, now).ToString();
                    int newScheduleMealSetDetailID = int.Parse(newScheduleMealSetDetailIDStr);

                    XmlSync.SaveScheduleMealSetDetailXml(newScheduleMealSetDetailID, mealSetID, scheduleID, now, now, null);

                    return Json(new { result = "done" }, JsonRequestBehavior.AllowGet);
                }
                catch (Exception ex)
                {
                    Log.ErrorLog(ex.Message);
                    return Json("error", JsonRequestBehavior.AllowGet);
                }
            }
            else
            {
                ScheduleMealSetDetailTableAdapter scheduleMealSetDetailTA = new ScheduleMealSetDetailTableAdapter();
                ScheduleTableAdapter scheduleTA = new ScheduleTableAdapter();

                scheduleMealSetDetailTA.Connection.Open();
                scheduleTA.Connection = scheduleMealSetDetailTA.Connection;

                using (SqlTransaction transaction = scheduleMealSetDetailTA.Connection.BeginTransaction())
                {
                    try
                    {
                        scheduleMealSetDetailTA.AttachTransaction(transaction);
                        scheduleTA.AttachTransaction(transaction);

                        DataTable scheduleDT = scheduleTA.GetDataByID(scheduleID);

                        if (scheduleDT.Rows.Count != 1)
                        {
                            throw new Exception("Can't find schedule with [scheduleID] = " + scheduleID);
                        }

                        DataRow scheduleRow = scheduleDT.Rows[0];
                        string username = AccountInfo.GetUserName(Request);
                        DateTime now = DateTime.Now;

                        scheduleTA.Update(scheduleRow.Field<DateTime>("Date"), scheduleRow.Field<int>("ServingTimeID"), true
                            , scheduleRow.Field<DateTime>("InsertedDate"), username, now, scheduleID);

                        XmlSync.SaveScheduleXml(scheduleID, scheduleRow.Field<DateTime>("Date"), scheduleRow.Field<int>("ServingTimeID"), true
                            , scheduleRow.Field<DateTime>("InsertedDate"), username, now, null);

                        string newScheduleMealSetDetailIDStr = scheduleMealSetDetailTA.InsertScalar(mealSetID, scheduleID, now, now).ToString();
                        int newScheduleMealSetDetailID = int.Parse(newScheduleMealSetDetailIDStr);

                        XmlSync.SaveScheduleMealSetDetailXml(newScheduleMealSetDetailID, mealSetID, scheduleID, now, now, null);

                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        Log.ErrorLog(ex.Message);
                        return Json("error", JsonRequestBehavior.AllowGet);
                    }
                }

                return Json(new { result = "done" }, JsonRequestBehavior.AllowGet);
            }
        }
        public JsonResult SetIsDayOn(bool isDayOn, int scheduleID)
        {
            ScheduleMealSetDetailTableAdapter scheduleMealSetDetailTA = new ScheduleMealSetDetailTableAdapter();
            ScheduleTableAdapter scheduleTA = new ScheduleTableAdapter();

            scheduleMealSetDetailTA.Connection.Open();
            scheduleTA.Connection = scheduleMealSetDetailTA.Connection;

            using (SqlTransaction transaction = scheduleMealSetDetailTA.Connection.BeginTransaction())
            {
                scheduleMealSetDetailTA.AttachTransaction(transaction);
                scheduleTA.AttachTransaction(transaction);

                try
                {
                    if (!isDayOn)
                    {
                        DataTable scheduleMealSetDetailDT = scheduleMealSetDetailTA.GetDataByScheduleID(scheduleID);

                        foreach (DataRow row in scheduleMealSetDetailDT.Rows)
                        {
                            int scheduleMealSetDetailID = row.Field<int>("ScheduleMealSetDetailID");
                            scheduleMealSetDetailTA.Delete(scheduleMealSetDetailID);
                        }
                    }

                    DataTable scheduleDT = scheduleTA.GetDataByID(scheduleID);

                    if (scheduleDT.Rows.Count != 1)
                    {
                        throw new Exception("Can't find schedule with [scheduleID] = " + scheduleID);
                    }

                    DataRow scheduleRow = scheduleDT.Rows[0];
                    string username = AccountInfo.GetUserName(Request);
                    DateTime now = DateTime.Now;

                    scheduleTA.Update(scheduleRow.Field<DateTime>("Date"), scheduleRow.Field<int>("ServingTimeID"), isDayOn
                        , scheduleRow.Field<DateTime>("InsertedDate"), username, now, scheduleID);

                    XmlSync.SaveScheduleXml(scheduleID, scheduleRow.Field<DateTime>("Date"), scheduleRow.Field<int>("ServingTimeID"), isDayOn
                        , scheduleRow.Field<DateTime>("InsertedDate"), username, now, null);

                    transaction.Commit();
                    return Json(new { result = "done" }, JsonRequestBehavior.AllowGet);
                }
                catch (Exception ex)
                {
                    Log.ErrorLog(ex.Message);
                    transaction.Rollback();
                    return Json("error", JsonRequestBehavior.AllowGet);
                }
            }
        }