public HttpStatusCodeResult LaunchCampaign(LaunchCampaignData data) { CurrencyRecord currencyRecod = null; if (data.Currency.HasValue) { currencyRecod = _currencyRepository.Table.FirstOrDefault(aa => aa.Id == data.Currency.Value); } else { currencyRecod = _currencyRepository.Table.FirstOrDefault(aa => aa.Code == "USD"); } if (currencyRecod == null) { _currencyRepository.Table.FirstOrDefault(aa => aa.Code == "USD"); } if (string.IsNullOrWhiteSpace(data.CampaignTitle) && string.IsNullOrWhiteSpace(data.Description) && string.IsNullOrWhiteSpace(data.Alias)) { var error = "name|" + T("Campaign Title can't be empty") + "|campaign_description_text|" + T("Campaign Description can't be empty") + "|url|" + T("Campaign URL can't be empty"); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, error)); } if (string.IsNullOrWhiteSpace(data.CampaignTitle) && string.IsNullOrWhiteSpace(data.Description)) { var error = "name|" + T("Campaign Title can't be empty") + "|campaign_description_text|" + T("Campaign Description can't be empty"); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, error)); } if (string.IsNullOrWhiteSpace(data.CampaignTitle) && string.IsNullOrWhiteSpace(data.Alias)) { var error = "name|" + T("Campaign Title can't be empty") + "|url|" + T("Campaign URL can't be empty"); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, error)); } if (string.IsNullOrWhiteSpace(data.Description) && string.IsNullOrWhiteSpace(data.Alias)) { var error = "campaign_description_text|" + T("Campaign Description can't be empty") + "|url|" + T("Campaign URL can't be empty"); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, error)); } if (string.IsNullOrWhiteSpace(data.CampaignTitle)) { var error = "name|" + T("Campaign Title can't be empty"); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, error)); } if (string.IsNullOrWhiteSpace(data.Description)) { var error = "campaign_description_text|" + T("Campaign Description can't be empty"); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, error)); } if (string.IsNullOrWhiteSpace(data.Alias)) { var error = "url|" + T("Campaign URL can't be empty"); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, error)); } data.Alias = data.Alias.Trim(); if (data.Alias.Any(ch => char.IsWhiteSpace(ch))) { var error = "url|" + T("Campaign URL can't contain whitespaces"); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, error)); } if (data.Alias.Contains('&') || data.Alias.Contains('?') || data.Alias.Contains('/') || data.Alias.Contains('\\')) { var error = "url|" + T("Campaign URL has wrong format"); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, error)); } if (_campaignService.GetCampaignByAlias(data.Alias) != null) { var error = "url|" + T("Campaign with this URL already exists"); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, error)); } if (data.Alias.Length < 4) { var error = "url|" + T("Campaign URL must be at least 4 characters long"); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, error)); } if (string.IsNullOrWhiteSpace(data.Design)) { var error = "Design|" + T("No design found for your campaign"); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, error)); } if (_orchardServices.WorkContext.CurrentUser == null) { return(new HttpStatusCodeResult(HttpStatusCode.Forbidden)); } var campaignCurrency = _currencyRepository.Get(data.CampaignCurrencyId); //if (campaignCurrency != _priceConversionService.CurrentUserCurrency) //{ // var error = T("Campaign currency is not the same as user currency").ToString(); // return new HttpStatusCodeResult(HttpStatusCode.BadRequest, error); //} try { foreach (var prod in data.Products) { double price; if (!double.TryParse(prod.Price, out price)) { double.TryParse(prod.Price.Replace('.', ','), out price); } double cost; if (!double.TryParse(prod.BaseCost, out cost)) { double.TryParse(prod.BaseCost.Replace('.', ','), out cost); } if (price < cost) { prod.Price = prod.BaseCost; } } data.CampaignCulture = _cultureUsed; ////TODO: (auth:keinlekan) После удаления поля в таблице/моделе - удалить данный код var campaign = _campaignService.CreateNewCampiagn(data); CreateImagesForCampaignProducts(campaign); var pathToTemplates = Server.MapPath("/Modules/Teeyoot.Module/Content/message-templates/"); var pathToMedia = Request.Url.Scheme + "://" + Request.Url.Authority + Request.ApplicationPath.TrimEnd('/'); _teeyootMessagingService.SendNewCampaignAdminMessage(pathToTemplates, pathToMedia, campaign.Id); ////TODO: add conditional here to allow admin to set setting for it, is campaign is auto-approved or not. Approve(campaign.Id); return(new HttpStatusCodeResult(HttpStatusCode.OK)); } catch (Exception e) { Logger.Log(LogLevel.Error, e, "", null); Logger.Error("Error occured when trying to create new campaign ---------------> " + e); return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError, T("Error occured when trying to create new campaign").ToString())); } }