public ContentResult NativeSave(DataAction action, ValidEvent changedEvent, FormCollection actionValues)
        {
            var data = new DHXSchedulerModelsDataContext();

            try
            {
                switch (action.Type)
                {
                case DataActionTypes.Insert:
                    data.ValidEvents.InsertOnSubmit(changedEvent);
                    break;

                case DataActionTypes.Delete:
                    changedEvent = data.ValidEvents.SingleOrDefault(ev => ev.id == action.SourceId);
                    data.ValidEvents.DeleteOnSubmit(changedEvent);
                    break;

                default:    // "update"
                    var eventToUpdate = data.ValidEvents.SingleOrDefault(ev => ev.id == action.SourceId);
                    DHXEventsHelper.Update(eventToUpdate, changedEvent, new List <string>()
                    {
                        "id"
                    });
                    break;
                }
                data.SubmitChanges();
                action.TargetId = changedEvent.id;
            }
            catch
            {
                action.Type = DataActionTypes.Error;
            }

            return(new AjaxSaveResponse(action));
        }
        public ActionResult Save(int?id, FormCollection actionValues)
        {
            var action = new DataAction(actionValues);

            DHXSchedulerModelsDataContext data = new DHXSchedulerModelsDataContext();

            try
            {
                var changedEvent = (Recurring)DHXEventsHelper.Bind(typeof(Recurring), actionValues);
                //operations with recurring events require some additional handling
                bool isFinished = deleteRelated(action, changedEvent, data);
                if (!isFinished)
                {
                    switch (action.Type)
                    {
                    case DataActionTypes.Insert:
                        data.Recurrings.InsertOnSubmit(changedEvent);
                        if (changedEvent.rec_type == "none")    //delete one event from the serie
                        {
                            action.Type = DataActionTypes.Delete;
                        }
                        break;

                    case DataActionTypes.Delete:
                        changedEvent = data.Recurrings.SingleOrDefault(ev => ev.id == action.SourceId);
                        data.Recurrings.DeleteOnSubmit(changedEvent);
                        break;

                    default:    // "update"
                        var eventToUpdate = data.Recurrings.SingleOrDefault(ev => ev.id == action.SourceId);
                        DHXEventsHelper.Update(eventToUpdate, changedEvent, new List <string>()
                        {
                            "id"
                        });
                        break;
                    }
                }
                data.SubmitChanges();


                action.TargetId = changedEvent.id;
            }
            catch
            {
                action.Type = DataActionTypes.Error;
            }

            return(new AjaxSaveResponse(action));
        }
        public ContentResult CustomFormSave(DataAction action, ValidEvent changedEvent, FormCollection actionValues)
        {
            if (actionValues["actionType"] != null)
            {
                var actionType = actionValues["actionType"].ToLower();
                var data       = new DHXSchedulerModelsDataContext();
                try
                {
                    if (actionType == "save")
                    {
                        if (data.ValidEvents.SingleOrDefault(ev => ev.id == action.SourceId) != null)
                        {
                            //update event
                            var eventToUpdate = data.ValidEvents.SingleOrDefault(ev => ev.id == action.SourceId);

                            DHXEventsHelper.Update(eventToUpdate, changedEvent, new List <string>()
                            {
                                "id"
                            });

                            action.Type = DataActionTypes.Update;
                        }
                        else
                        {
                            //create event
                            data.ValidEvents.InsertOnSubmit(changedEvent);
                            action.Type = DataActionTypes.Insert;
                        }
                    }
                    else if (actionType == "delete")
                    {
                        changedEvent = data.ValidEvents.SingleOrDefault(ev => ev.id == action.SourceId);
                        data.ValidEvents.DeleteOnSubmit(changedEvent);

                        action.Type = DataActionTypes.Delete;
                    }
                    data.SubmitChanges();
                }

                catch
                {
                    action.Type = DataActionTypes.Error;
                }
            }



            return(new SchedulerFormResponseScript(action, changedEvent));
        }
        public ActionResult CustomSave(Event changedEvent, FormCollection actionValues)
        {
            var action = new DataAction(DataActionTypes.Update, changedEvent.id, changedEvent.id);

            if (actionValues["actionButton"] != null)
            {
                DHXSchedulerModelsDataContext data = new DHXSchedulerModelsDataContext();
                try
                {
                    if (actionValues["actionButton"] == "Save")
                    {
                        if (data.Events.SingleOrDefault(ev => ev.id == action.SourceId) != null)
                        {
                            var eventToUpdate = data.Events.SingleOrDefault(ev => ev.id == action.SourceId);
                            DHXEventsHelper.Update(eventToUpdate, changedEvent, new List <string>()
                            {
                                "id"
                            });
                        }
                        else
                        {
                            action.Type = DataActionTypes.Insert;
                            data.Events.InsertOnSubmit(changedEvent);
                        }
                    }
                    else if (actionValues["actionButton"] == "Delete")
                    {
                        action.Type  = DataActionTypes.Delete;
                        changedEvent = data.Events.SingleOrDefault(ev => ev.id == action.SourceId);
                        data.Events.DeleteOnSubmit(changedEvent);
                    }
                    data.SubmitChanges();
                }

                catch
                {
                    action.Type = DataActionTypes.Error;
                }
            }
            else
            {
                action.Type = DataActionTypes.Error;
            }


            return(new SchedulerFormResponseScript(action, changedEvent));
        }
        public ContentResult Save(int?id, FormCollection actionValues)
        {
            var action       = new DataAction(actionValues);
            var changedEvent = (Event)DHXEventsHelper.Bind(typeof(Event), actionValues);
            DHXSchedulerModelsDataContext data = new DHXSchedulerModelsDataContext();

            if (this.Request.IsAuthenticated && changedEvent.user_id == data.UserDetails.SingleOrDefault(u => u.UserName == this.HttpContext.User.Identity.Name).UserId)
            {
                try
                {
                    switch (action.Type)
                    {
                    case DataActionTypes.Insert:
                        changedEvent.room_id = data.Rooms.First().key;
                        data.Events.InsertOnSubmit(changedEvent);
                        break;

                    case DataActionTypes.Delete:
                        changedEvent = data.Events.SingleOrDefault(ev => ev.id == action.SourceId);
                        data.Events.DeleteOnSubmit(changedEvent);
                        break;

                    default:    // "update"
                        var eventToUpdate = data.Events.SingleOrDefault(ev => ev.id == action.SourceId);
                        DHXEventsHelper.Update(eventToUpdate, changedEvent, new List <string>()
                        {
                            "id"
                        });
                        break;
                    }
                    data.SubmitChanges();
                    action.TargetId = changedEvent.id;
                }
                catch
                {
                    action.Type = DataActionTypes.Error;
                }
            }
            else
            {
                action.Type = DataActionTypes.Error;
            }
            return(new AjaxSaveResponse(action));
        }
        public ContentResult Save(int?id, FormCollection actionValues)
        {
            var action = new DataAction(actionValues);
            DHXSchedulerModelsDataContext data = new DHXSchedulerModelsDataContext();

            try
            {
                var changedEvent = (Event)DHXEventsHelper.Bind(typeof(Event), actionValues);
                switch (action.Type)
                {
                case DataActionTypes.Insert:
                    data.Events.InsertOnSubmit(changedEvent);
                    break;

                case DataActionTypes.Delete:
                    changedEvent = data.Events.SingleOrDefault(ev => ev.id == action.SourceId);
                    data.Events.DeleteOnSubmit(changedEvent);
                    break;

                default:    // "update"
                    var eventToUpdate = data.Events.SingleOrDefault(ev => ev.id == action.SourceId);
                    //update all properties, except for id
                    DHXEventsHelper.Update(eventToUpdate, changedEvent, new List <string>()
                    {
                        "id"
                    });
                    break;
                }
                data.SubmitChanges();
                action.TargetId = changedEvent.id;
            }
            catch
            {
                action.Type = DataActionTypes.Error;
            }
            return(new AjaxSaveResponse(action));
        }