public ActionResult SendToVendor(OrderVia via, Guid?vendorId, Guid?id, string[] segmentsSelected) { try { Campaign campaign = Db.Campaigns.Include(x => x.Approved).FirstOrDefault(x => x.Id == id); if (campaign == null) { throw new AdsException("Campagin with Id: " + id + " Not Found."); } if (campaign.Approved == null) { throw new AdsException("Campagin: " + campaign.CampaignName + " is not yet approved."); } switch (via) { case OrderVia.Email: BackgroundJob.Enqueue(() => CampaignProcessor.SendToVendor(via, vendorId, campaign.OrderNumber, segmentsSelected, string.Empty)); break; case OrderVia.Api: string whiteLabel = LoggedInUser?.CustomerId == null ? "ADS" : LoggedInUser?.Customer.WhiteLabel; string whiteLabelDomain = Db.Customers.FirstOrDefault(x => x.WhiteLabel == whiteLabel)?.WebDomain; if (string.IsNullOrEmpty(whiteLabelDomain)) { throw new AdsException("White Label Web Domain can not be empty."); } CampaignProcessor.SendToVendor(via, vendorId, campaign.OrderNumber, segmentsSelected, whiteLabelDomain); break; } return(Json(new JsonResponse() { IsSucess = true }, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { return(Json(new JsonResponse() { IsSucess = false, ErrorMessage = ex.Message }, JsonRequestBehavior.AllowGet)); } }
private ActionResult Rebroad(OrderVia via, Guid?id, DateTime?reBroadcastedDate, long reBroadcastedQuantity, Guid?vendor) { if (reBroadcastedDate == null || vendor == null) { TempData["Error"] = $"ReBroadcastedDate and Vendor is required."; return(RedirectToAction("Rebroad", "Campaigns", new { id = id })); } Campaign campaign = Db.Campaigns.FirstOrDefault(x => x.Id == id); if (campaign.ReBroadcasted) { TempData["Error"] = $"Already rebroadcasted."; return(RedirectToAction("Rebroad", "Campaigns", new { id = id })); } campaign.ReBroadcasted = true; campaign.ReBroadcastedDate = reBroadcastedDate; campaign.ReBroadcastedQuantity = reBroadcastedQuantity; campaign.ReBroadcastedOrderNumber = campaign.OrderNumber + "RDP"; Db.SaveChanges(); switch (via) { case OrderVia.Email: BackgroundJob.Enqueue(() => CampaignProcessor.SendToVendor(via, vendor, campaign.OrderNumber, null, string.Empty)); break; case OrderVia.Api: string whiteLabel = LoggedInUser?.CustomerId == null ? "ADS" : LoggedInUser?.Customer.WhiteLabel; string whiteLabelDomain = Db.Customers.FirstOrDefault(x => x.WhiteLabel == whiteLabel)?.WebDomain; if (string.IsNullOrEmpty(whiteLabelDomain)) { throw new AdsException("White Label Web Domain can not be empty."); } CampaignProcessor.SendToVendor(via, null, campaign.OrderNumber, null, whiteLabelDomain); break; } // Send email to vendor //BackgroundJob.Enqueue(() => CampaignProcessor.SendToVendor(OrderVia.Email, vendor, campaign.OrderNumber, null, String.Empty)); TempData["Success"] = "Order #:" + campaign.OrderNumber + ", Campaign " + campaign.CampaignName + " Rebroad has been sent to vendor sucessfully."; return(RedirectToAction("Rebroad", "Campaigns", new { id = campaign.Id })); }
public ActionResult Create( [Bind( Include = "Assets,Segments,ID,OrderNumber,CreatedAt,CampaignName,BroadcastDate,RepresentativeName,RepresentativeEmail,ReBroadCast,ReBroadcastDate,Price,TestingUrgency,GeoDetails,Demographics,Quantity,FromLine,SubjectLine,IsPersonalization,IsMatchback,IsSuppression,IsOpenPixel,OpenPixelUrl,BannerUrl,WhiteLabel,OptOut,SpecialInstructions,IsAddViewInBrowser,IsAddOptOut,DataFileQuantity,IsOmniOrder,OmniDeployDate,Impressions,ChannelTypes")] CampaignVm campaignVm) { if (ModelState.IsValid) { try { string userName = string.IsNullOrEmpty(LoggedInUser?.UserName) ? UsersList.FirstOrDefault().Text : LoggedInUser?.UserName; TinyMapper.Bind <CampaignVm, Campaign>(config => { config.Ignore(x => x.Segments); config.Ignore(x => x.ChannelTypes); }); var campaign = TinyMapper.Map <Campaign>(campaignVm); char c2 = 'A'; foreach (var segmentVm in campaignVm.Segments) { var segment = TinyMapper.Map <CampaignSegment>(segmentVm); segment.Id = Guid.NewGuid(); segment.CreatedAt = DateTime.Now; segment.OrderNumber = "" + campaignVm.OrderNumber; segment.SegmentNumber = campaignVm.OrderNumber + "" + c2++; campaign.Segments.Add(segment); } campaign.Id = Guid.NewGuid(); campaign.CreatedAt = DateTime.Now; campaign.CreatedBy = userName; campaign.OrderNumber = campaignVm.OrderNumber.ToString(); campaign.IP = Request.ServerVariables["REMOTE_ADDR"]; campaign.Browser = Request.UserAgent; campaign.OS = Environment.OSVersion.Platform + " " + Environment.OSVersion.VersionString; campaign.Referrer = Request.UrlReferrer.AbsolutePath; campaign.ChannelTypes = campaignVm.ChannelTypes == null ? null : string.Join(",", campaignVm.ChannelTypes); campaign.Assets.Id = Guid.NewGuid(); campaign.Assets.CampaignId = campaign.Id; campaign.Assets.CreatedAt = DateTime.Now; campaign.Assets.CreatedBy = userName; Db.Campaigns.Add(campaign); Db.SaveChanges(); BackgroundJob.Enqueue(() => CampaignProcessor.ProcessNewOrder(campaign.OrderNumber, userName)); ForceOrders = true; TempData["Success"] = "Order #: " + campaign.OrderNumber + " , Campaign " + campaign.CampaignName + " has been submitted sucessfully."; } catch (Exception ex) { TempData["Error"] = "This is error while creating order." + ex.Message; } return(RedirectToAction("Index")); } campaignVm.ChannelTypes = campaignVm.ChannelTypes ?? new List <ChannelType> { }; ViewBag.TestingUrgency = new SelectList(EnumHelper.GetEnumTextValues(typeof(TestingUrgency)), "Value", "Text", campaignVm.TestingUrgency); ViewBag.WhiteLabel = new SelectList(CustomersWithWLList, "Value", "Text", LoggedInUser?.Customer?.WhiteLabel); return(View(campaignVm)); }