public ActionResult EditAd(AdvertiseViewData model) { JsonViewData viewData = Validate <JsonViewData>( new Validation(() => CurrentUser.CanModerate() == false, "Nie masz praw do wykonowania tej operacji."), new Validation(() => string.IsNullOrEmpty(model.RecommendationLink.NullSafe()), "Link rekomendacji nie może być pusty."), new Validation(() => string.IsNullOrEmpty(model.RecommendationTitle.NullSafe()), "Tytuł rekomendacji nie może być pusty."), new Validation(() => string.IsNullOrEmpty(model.ImageLink.NullSafe()), "Link obrazka nie może być pusty."), new Validation(() => string.IsNullOrEmpty(model.ImageTitle.NullSafe()), "Tytuł obrazka nie może być pusty."), new Validation(() => model.StartTime >= model.EndTime, "Data zakończenia reklamy musi być większa od daty początkowej"), new Validation(() => string.IsNullOrEmpty(model.Email), "Adres e-mail nie może być pusty."), new Validation(() => !model.Email.NullSafe().IsEmail(), "Niepoprawny adres e-mail.") ); var bannerType = string.IsNullOrWhiteSpace(model.IsBanner) == false; if (viewData == null) { try { if (bannerType) { var request = WebRequest.Create(Server.MapPath(string.Format("/Assets/Images/{0}", model.ImageLink))); var response = request.GetResponse(); var image = Image.FromStream(response.GetResponseStream()); if (image.Width != 960) { viewData = new JsonViewData { errorMessage = string.Format("Oczekiwana szerokość banera to 960px, twoja to: {0}", image.Width) }; return(Json(viewData)); } } using (IUnitOfWork unitOfWork = UnitOfWork.Begin()) { if (model.Id == null || model.Id.IsEmpty()) { IRecommendation recommendation = _factory.CreateRecommendation( model.RecommendationLink.Trim(), model.RecommendationTitle.Trim(), model.ImageLink.Trim(), model.ImageTitle.Trim(), model.StartTime, model.EndTime, model.Email, model.Position, model.NotificationIsSent, bannerType); _recommendationRepository.Add(recommendation); unitOfWork.Commit(); Log.Info("Recommendation registered: {0}", recommendation.RecommendationTitle); viewData = new JsonViewData { isSuccessful = true }; } else { IRecommendation recommendation = _recommendationRepository.FindById(model.Id.ToGuid()); if (recommendation == null) { viewData = new JsonViewData { errorMessage = "Podana reklama nie istnieje." }; } else { _recommendationRepository.EditAd( recommendation, model.RecommendationLink.NullSafe(), model.RecommendationTitle.NullSafe(), model.ImageLink.NullSafe(), model.ImageTitle.NullSafe(), model.StartTime, model.EndTime, model.Email, model.Position, model.NotificationIsSent, bannerType); unitOfWork.Commit(); viewData = new JsonViewData { isSuccessful = true }; } } } } catch (ArgumentException argument) { viewData = new JsonViewData { errorMessage = argument.Message }; } catch (WebException e) { viewData = new JsonViewData { errorMessage = "Podany link do zdjęcia jest nieprawidłowy" }; } catch (Exception e) { Log.Exception(e); viewData = new JsonViewData { errorMessage = FormatStrings.UnknownError.FormatWith("") }; } } return(Json(viewData)); }