public ActionResult AddEvent(EventViewData model) { JsonViewData viewData = Validate <JsonViewData>( new Validation(() => string.IsNullOrWhiteSpace(model.EventLink.NullSafe()), "Link do wydarzenia nie może być pusty."), new Validation(() => string.IsNullOrWhiteSpace(model.EventName.NullSafe()), "Tytuł wydarzenia nie może być pusty."), new Validation(() => model.EventUserEmail.NullSafe().IsEmail() == false, "Nieprawidłowy adres e-mail."), new Validation(() => model.Id.ToGuid() != Guid.Empty, "Id wydarzenia nie może być podane"), new Validation(() => !model.EventEndDate.IsLaterThan(model.EventDate), "Nieprawidłowa data zakończenia wydarzenia.") ); if (viewData == null) { try { var eventApproveStatus = CurrentUser != null && CurrentUser.IsAdministrator() && model.IsApproved; if (eventApproveStatus) { model.GoogleEventId = _googleService.EventApproved(new CommingEvent(model.EventName, model.EventLink, model.GoogleEventId, model.EventDate, model.EventEndDate, model.EventCity, model.EventPlace, model.EventLead, model.IsOnline)); } using (IUnitOfWork unitOfWork = UnitOfWork.Begin()) { var commingEvent = _factory.CreateCommingEvent( model.EventUserEmail, model.EventLink, model.EventName, model.GoogleEventId, model.EventDate, model.EventEndDate, model.EventCity, model.EventPlace, model.EventLead, eventApproveStatus, model.IsOnline ); _commingEventRepository.Add(commingEvent); unitOfWork.Commit(); _aggregator.GetEvent <UpcommingEventEvent>() .Publish(new UpcommingEventEventArgs(model.EventName, model.EventLink)); Log.Info("Event registered: {0}", commingEvent.EventName); viewData = new JsonViewData { isSuccessful = true }; } } catch (Exception e) { Log.Exception(e); viewData = new JsonViewData { errorMessage = FormatStrings.UnknownError.FormatWith("dodawania wydarzenia") }; } } return(Json(viewData)); }