示例#1
0
        public bool UpdateMessage(ScheduleMessage model)
        {
            bool result = false;

            try
            {
                _context.SaveChanges();
                result = true;
            }
            catch (Exception ex)
            {
                result = false;
            }
            return(result);
        }
示例#2
0
        public async Task ScheduleBack(ScrapySource source, PlatformModel platformModel, List <string> urls, ScheduleMessage scheduleMessage)
        {
            HttpSource httpSource = JsonConvert.DeserializeObject <HttpSource>(source.Source.Parameters.ToString());

            if (httpSource.Layer > 0)
            {
                var transforms = scheduleMessage.Transforms
                                 .Where(x => x.MapToSource.Contains(source.Name))
                                 .Select(x => { x.MapToSource = new string[] { source.Name }; return(x); })
                                 .ToArray();
                var scheduleSource = scheduleMessage.Sources.Where(x => x.Name == source.Name).First();
                var loadMaps       = scheduleMessage.LandingTargets.LoadMaps
                                     .Where(x => transforms.Any(y => y.Name == x.FromTransform))
                                     .ToArray();
                WebSeed webSeed = JsonConvert.DeserializeObject <WebSeed>(scheduleSource.Parameters.ToString());
                foreach (var url in urls)
                {
                    webSeed.SeedUrl           = url;
                    webSeed.Depth             = httpSource.Layer - 1;
                    scheduleSource.Parameters = webSeed;
                    ScheduleMessage subSchedule = new ScheduleMessage()
                    {
                        MessageId      = scheduleMessage.MessageId,
                        Sources        = new ScheduleSource[] { scheduleSource },
                        Transforms     = transforms,
                        LandingTargets = new ScheduleLoad()
                        {
                            LoadProviders = scheduleMessage.LandingTargets.LoadProviders,
                            LoadMaps      = loadMaps
                        },
                        MessageName = scheduleMessage.MessageName,
                        Scheduler   = scheduleMessage.Scheduler
                    };
                    await Task.Delay(sendRate);
                    await ScheduleNew(subSchedule, platformModel);
                }
            }
        }
示例#3
0
        public async Task ScheduleNew(ScheduleMessage scheduleMessage, PlatformModel platformModel)
        {
            Dictionary <string, ScrapySource> sourceDict =
                SourceGenManager.Instance.GenerateSource(scheduleMessage.Sources, scheduleMessage.MessageId);

            TransformEventData transformEventData =
                TransformGenManager.Instance.GenerateTransform(sourceDict, scheduleMessage.Transforms);

            LoadEventData loadEventData = LoadGenManager.Instance
                                          .GenerateLoadEvent(transformEventData, scheduleMessage.LandingTargets);

            MessageIndexer messageIndexer = new MessageIndexer()
            {
                MessageId    = scheduleMessage.MessageId,
                MessageName  = scheduleMessage.MessageName,
                StartTime    = DateTime.Now,
                SourceJobIds = sourceDict.Values
                               .Select(x => x.JobId).ToDictionary(x => x, x => 0),
                TransformJobIds = transformEventData.TransformEvents
                                  .SelectMany(x => x.Value)
                                  .Select(x => x.JobId)
                                  .ToDictionary(x => x, x => 0),
                LoadJobIds = loadEventData.LoadEvents
                             .Select(x => x.JobId)
                             .ToDictionary(x => x, x => 0)
            };
            TaskingManager manager = new TaskingManager();

            manager.AddTask(platformModel.CoreCache.StoreAsync(PrefixConst.MESSAGE_JOBs + messageIndexer.MessageId, messageIndexer));

            foreach (var srcKey in transformEventData.SourceMapToTransform.Keys)
            {
                manager.AddTask(platformModel.CoreCache.StoreAsync(
                                    PrefixConst.SOURCE_TRANSFOR_MAP + srcKey,
                                    transformEventData.SourceMapToTransform[srcKey]));
            }
            foreach (var transkv in loadEventData.TransformToLoadMap)
            {
                manager.AddTask(platformModel.CoreCache.StoreStringAsync(
                                    PrefixConst.TRANSFORM_LOAD_MAP + transkv.Key, transkv.Value));
            }

            foreach (var source in sourceDict.Values)
            {
                manager.AddTask(platformModel.CoreCache.StoreAsync(
                                    PrefixConst.SOURCE_META + source.JobId,
                                    source));
            }
            foreach (var transform in transformEventData.TransformEvents.SelectMany(x => x.Value))
            {
                manager.AddTask(platformModel.CoreCache.StoreAsync(
                                    PrefixConst.TRANSFORM_META + transform.JobId, transform));
            }

            foreach (var load in loadEventData.LoadEvents)
            {
                manager.AddTask(platformModel.CoreCache.StoreAsync(
                                    PrefixConst.LOAD_META + load.JobId, load));
            }



            await manager.WhenAll();

            await PublishSourceJobs(
                scheduleMessage.MessageName,
                scheduleMessage.MessageId,
                platformModel.PlatformExit,
                messageIndexer.SourceJobIds.Keys.ToArray());
        }
示例#4
0
 public Task ScheduleNew(ScheduleMessage scheduleMessage)
 {
     throw new NotImplementedException();
 }
示例#5
0
        public ActionResult Index(HttpPostedFileBase postedFile)
        {
            string filePath = string.Empty;

            if (postedFile != null)
            {
                string path = Server.MapPath("~/Uploads/");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }

                filePath = path + Path.GetFileName(postedFile.FileName);
                string extension = Path.GetExtension(postedFile.FileName);
                postedFile.SaveAs(filePath);

                //Create a DataTable.
                DataTable dt = new DataTable();
                dt = ConvertCSVtoDataTable(filePath, true);
                DevinTwilioEntities db = new DevinTwilioEntities();

                try
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        int?TriggerTypeID  = null;
                        int?TriggerEventID = null;
                        int?TriggerID      = null;
                        int?MMDomainID     = null;
                        int?MMSubDomainID  = null;

                        string TriggerType = Convert.ToString(dt.Rows[i]["Trigger Type"]);
                        if (!string.IsNullOrEmpty(TriggerType))
                        {
                            var TriggerTypeDetail = db.TriggerTypes.Where(m => m.TriggerType_Type == TriggerType).FirstOrDefault();

                            if (TriggerTypeDetail != null)
                            {
                                TriggerTypeID = TriggerTypeDetail.TriggerType_ID;
                            }
                        }


                        string TriggerEventDay = Convert.ToString(dt.Rows[i]["Trigger Event"]);
                        if (!string.IsNullOrEmpty(TriggerEventDay) && TriggerTypeID != null && TriggerTypeID > 0)
                        {
                            var TriggerEventDetails = db.TriggerEvents.Where(c => c.TriggerEvent_Day == TriggerEventDay && c.TriggerTypeId == TriggerTypeID).FirstOrDefault();
                            if (TriggerEventDetails != null)
                            {
                                TriggerEventID = TriggerEventDetails.TriggerEvent_ID;
                            }
                        }


                        //string Trigger = Convert.ToString(dt.Rows[i]["Trigger"]);
                        //if (!string.IsNullOrEmpty(Trigger))
                        //{
                        //    var TriggersDetails = db.Triggers.Where(c => c.Trigger_Trigger == Trigger).FirstOrDefault();
                        //    if (TriggersDetails != null)
                        //    {
                        //        TriggerID = TriggersDetails.Trigger_ID;
                        //    }
                        //}


                        string MMDomain = Convert.ToString(dt.Rows[i]["MM Domain"]);
                        if (!string.IsNullOrEmpty(MMDomain))
                        {
                            MMDomainID = db.MMDomains.Where(c => c.MMDomain_Name == MMDomain).FirstOrDefault().MMDomain_ID;
                        }

                        string MMSubDomain = Convert.ToString(dt.Rows[i]["MM Sub-Domain"]);
                        if (!string.IsNullOrEmpty(MMSubDomain))
                        {
                            MMSubDomainID = db.MMSubDomains.Where(c => c.MMSubDomain_Name == MMSubDomain).FirstOrDefault().MMSubDomain_ID;
                        }

                        ScheduleMessage schMessage = new ScheduleMessage();
                        schMessage.ScheduleMessage_Message = Convert.ToString(dt.Rows[i]["Messages"]);

                        string appointmentScheduleDay = Convert.ToString(dt.Rows[i]["Appointment Schedule Day"]);
                        int    appoinmentDay          = 0;
                        if (appointmentScheduleDay != "")
                        {
                            double num;
                            if (double.TryParse(appointmentScheduleDay, out num))
                            {
                                appoinmentDay = Convert.ToInt32(appointmentScheduleDay);
                                schMessage.Appointment_Schedule = appoinmentDay;
                            }
                        }

                        if (dt.Rows[i]["ID"] != null)
                        {
                            schMessage.Display_MessageId = Convert.ToInt32(dt.Rows[i]["ID"]);
                        }


                        schMessage.ScheduleMessage_TriggerTypeID  = TriggerTypeID;
                        schMessage.ScheduleMessage_TriggerEventID = TriggerEventID;
                        // schMessage.ScheduleMessage_TriggerID = TriggerID;
                        schMessage.ScheduleMessage_Time = Convert.ToString(dt.Rows[i]["Time"]);
                        //   schMessage.ScheduleMessage_FrequencyOfDelivery = Convert.ToString(dt.Rows[i]["Frequency of delivery"]);
                        schMessage.ScheduleMessage_If1 = Convert.ToString(dt.Rows[i]["If 1"]);
                        schMessage.ScheduleMessage_If2 = Convert.ToString(dt.Rows[i]["If 2"]);
                        //  schMessage.ScheduleMessage_OtherNotes = Convert.ToString(dt.Rows[i]["Other Notes"]);
                        schMessage.ScheduleMessage_TimesSent     = Convert.ToString(dt.Rows[i]["Times Sent"]);
                        schMessage.ScheduleMessage_MMDomainID    = MMDomainID;
                        schMessage.ScheduleMessage_MMSubDomainID = MMSubDomainID;

                        if (!string.IsNullOrEmpty(schMessage.ScheduleMessage_Message))
                        {
                            db.ScheduleMessages.Add(schMessage);
                            db.SaveChanges();

                            //var dbMessage = new ScheduleMessage();
                            //if (TriggerTypeID == (int)TriggerType_Enum.Enrollment)
                            //    dbMessage = db.ScheduleMessages.FirstOrDefault(c => c.ScheduleMessage_TriggerEventID == TriggerEventID && c.ScheduleMessage_TriggerTypeID == TriggerTypeID);
                            //else if (TriggerTypeID == (int)TriggerType_Enum.Appointment)
                            //{
                            //    dbMessage = db.ScheduleMessages.FirstOrDefault(c => c.ScheduleMessage_TriggerEventID == TriggerEventID && c.ScheduleMessage_TriggerTypeID == TriggerTypeID && c.Appointment_Schedule == appoinmentDay);
                            //}
                            //else
                            //    dbMessage = db.ScheduleMessages.FirstOrDefault(c => c.ScheduleMessage_Message == schMessage.ScheduleMessage_Message);


                            //if (dbMessage == null || dbMessage.ScheduleMessage_ID == 0)
                            //{
                            //    db.ScheduleMessages.Add(schMessage);
                            //    db.SaveChanges();
                            //}
                        }
                    }
                    TempData["successMessage"] = "Message has been added sucessfully.";
                }
                catch (Exception ex)
                {
                    TempData["errorMessage"] = ex.Message;
                }
            }

            List <ScheduleViewModels> listScheduleMessages = GetAll();

            return(View(listScheduleMessages));
        }
示例#6
0
        public ActionResult Create(ScheduleViewModels model)
        {
            if (model.TriggerTypeId == 4)
            {
                if (model.Day == null)
                {
                    TempData["errorMessage"] = "Day field is required for Appointment type";
                    BindDropDowns();
                    ViewBag.eventId = model.TriggerTypeId;
                    return(View());
                }
            }


            if (ModelState.IsValid)
            {
                // Save the data in the Schedule Message
                try
                {
                    DevinTwilioEntities db = new DevinTwilioEntities();

                    var dbResult = new ScheduleMessage();


                    //** This code is commented out to add multiple messages for same event type, event and for same day **//

                    //if (model.TriggerTypeId == (int)TriggerType_Enum.Response)
                    //    dbResult = db.ScheduleMessages.FirstOrDefault(c => c.ScheduleMessage_Message == model.Message);
                    //else if (model.TriggerTypeId == (int)TriggerType_Enum.Appointment)
                    //{
                    //    dbResult = db.ScheduleMessages.FirstOrDefault(c => c.ScheduleMessage_TriggerEventID == model.TriggerEventId && c.ScheduleMessage_TriggerTypeID == model.TriggerTypeId && c.Appointment_Schedule == model.Day);
                    //    }
                    //else
                    //    dbResult = db.ScheduleMessages.FirstOrDefault(c => c.ScheduleMessage_TriggerEventID == model.TriggerEventId && c.ScheduleMessage_TriggerTypeID == model.TriggerTypeId);
                    //if (dbResult != null)
                    //{
                    //    TempData["errorMessage"] = "Message already exist for selected trigger types and events.";
                    //    BindDropDowns();
                    //    ViewBag.eventId = model.TriggerTypeId;
                    //    return View();
                    //}


                    // TODO 1 - we have to remove this code and assign mmdomainid and mmsubdomainid directly from model
                    var domainId    = 0;
                    var subDomainId = 0;
                    if (model.MMDomainName != "")
                    {
                        var mmDomain = db.MMDomains.FirstOrDefault(c => c.MMDomain_Name == model.MMDomainName);
                        if (mmDomain != null)
                        {
                            domainId = mmDomain.MMDomain_ID;
                        }
                    }

                    if (model.MMSubDomainName != "")
                    {
                        var mmSubDomain = db.MMSubDomains.FirstOrDefault(c => c.MMSubDomain_Name == model.MMSubDomainName);
                        if (mmSubDomain != null)
                        {
                            subDomainId = mmSubDomain.MMSubDomain_ID;
                        }
                    }


                    ScheduleMessage objScheduleMessage = new ScheduleMessage();
                    objScheduleMessage.ScheduleMessage_Message        = model.Message;
                    objScheduleMessage.ScheduleMessage_TriggerTypeID  = model.TriggerTypeId;
                    objScheduleMessage.ScheduleMessage_TriggerEventID = model.TriggerEventId;
                    objScheduleMessage.ScheduleMessage_TriggerID      = model.TriggerId;
                    objScheduleMessage.ScheduleMessage_Time           = model.Time;
                    objScheduleMessage.ScheduleMessage_If1            = model.If1;
                    objScheduleMessage.ScheduleMessage_If2            = model.If2;
                    objScheduleMessage.ScheduleMessage_OtherNotes     = model.OtherNotes;
                    objScheduleMessage.ScheduleMessage_MMDomainID     = domainId;
                    objScheduleMessage.ScheduleMessage_MMSubDomainID  = subDomainId;
                    objScheduleMessage.Appointment_Schedule           = model.Day;
                    db.ScheduleMessages.Add(objScheduleMessage);
                    db.SaveChanges();
                    TempData["successMessage"] = "Message has been added sucessfully.";
                    return(RedirectToAction("Index", "Home"));
                }
                catch (Exception ex)
                {
                    TempData["errorMessage"] = ex.Message;
                }
            }
            BindDropDowns();
            return(View());
        }
 protected override Task ScheduleSend <T>(ScheduleMessage <T> message, IPipe <SendContext <ScheduleMessage <T> > > pipe,
                                          CancellationToken cancellationToken)
 {
     return(_publishEndpoint.Publish(message, pipe, cancellationToken));
 }
示例#8
0
 public Task StoreMeta(ScheduleMessage scheduleMessage)
 {
     return(coreCache.StoreAsync(PrefixConst.MESSAGE_META + scheduleMessage.MessageId, scheduleMessage));
 }
示例#9
0
        protected override async Task ScheduleSend(ScheduleMessage message, IPipe <SendContext <ScheduleMessage> > pipe, CancellationToken cancellationToken)
        {
            var endpoint = await _schedulerEndpoint().ConfigureAwait(false);

            await endpoint.Send(message, pipe, cancellationToken).ConfigureAwait(false);
        }
示例#10
0
 public Task ScheduleNew(ScheduleMessage scheduleMessage, PlatformModel platformModel)
 {
     throw new NotImplementedException();
 }
示例#11
0
 public Task ScheduleBack(ScrapySource source, PlatformModel platformModel, List <string> urls, ScheduleMessage scheduleMessage)
 {
     throw new NotImplementedException();
 }
示例#12
0
 private void Schedule(ScheduleMessage message)
 {
     Schedule(() => QuartzJob.Create(message.Key, message.Event, message.EventMetadata),
              message.RunAt,
              message.Key);
 }
示例#13
0
 protected abstract Task ScheduleSend <T>(ScheduleMessage <T> message, IPipe <SendContext <ScheduleMessage <T> > > pipe, CancellationToken cancellationToken)
     where T : class;
示例#14
0
 protected abstract Task ScheduleSend(ScheduleMessage message, IPipe <SendContext <ScheduleMessage> > pipe, CancellationToken cancellationToken);