public Answer UpdateEvent(EventCreateUpdateViewModel viewmodel)
        {
            var answer = ValidateEventFields(viewmodel);

            if (answer.AnswerType != AnswerType.Success)
            {
                return(answer);
            }

            var model = Session.Load <Event>(viewmodel.Id);

            if (model == null)
            {
                return(Answer.Error("תקלה בטעינת האירוע"));
            }

            var userActions = GetUserActions(model, viewmodel);

            foreach (var userAction in userActions.list)
            {
                Session.Store(userAction);
            }

            model.UpdatedOn       = SystemClock.Instance.GetCurrentInstant();
            model.IsSpecialPrice  = viewmodel.IsSpecialPrice;
            model.SpecialPrice    = viewmodel.SpecialPrice;
            model.Name            = viewmodel.Name;
            model.Description     = viewmodel.Description;
            model.ConventionDayId = viewmodel.ConventionDayId;
            model.Status          = viewmodel.Status;
            model.GameMasterIds   = viewmodel.GameMasterIds;
            model.Size            = viewmodel.Size;
            model.AgeId           = viewmodel.AgeId;
            model.Tags            = viewmodel.Tags;
            model.SpecialRequests = viewmodel.SpecialRequests;
            model.ActivityId      = viewmodel.ActivityId;
            model.SubActivityId   = viewmodel.SubActivityId;
            model.HallId          = viewmodel.HallId;
            model.HallTable       = int.Parse(viewmodel.HallTable);

            if (viewmodel.StartTimeSelector.IsNotEmptyString() && viewmodel.Duration.HasValue)
            {
                var timeSplit = viewmodel.StartTime.Split(':');
                var hours     = int.Parse(timeSplit[0]);
                var minutes   = int.Parse(timeSplit[1]);
                var num       = (int)viewmodel.Duration.Value / 1;
                var denum     = (int)viewmodel.Duration.Value % 1;

                var startTime = new LocalTime(hours, minutes);
                var endTime   = startTime.PlusHours(num).PlusMinutes(denum);

                var tempTimeSlot = new TimeSlot
                {
                    From     = startTime,
                    To       = endTime,
                    Duration = viewmodel.Duration.Value
                };

                if (model.TimeSlot.AsJson() != tempTimeSlot.AsJson())
                {
                    var action = new UserAction()
                    {
                        TimeStamp  = userActions.timestamp,
                        Field      = "TimeSlot",
                        DocumentId = model.Id,
                        NewValue   = tempTimeSlot.AsJson(),
                        OldValue   = model.TimeSlot.AsJson(),
                        UserId     = Actor.Me.Id
                    };
                    model.TimeSlot = tempTimeSlot;
                    Session.Store(action);
                }
            }

            Session.SaveChanges();
            return(Answer.Success);
        }