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); }