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));
            }
        }
Exemple #2
0
        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 }));
        }
Exemple #3
0
        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));
        }