Esempio n. 1
0
        public async Task <IHttpActionResult> SubmitEvent()
        {
            try
            {
                Random r         = new Random();
                var    db        = new TunstallDatabaseContext();
                var    modelData = await Request.Content.ReadAsStringAsync();

                var model = JsonConvert.DeserializeObject <EventModel>(modelData);

                var newEvent = new TunstallDAL.Entities.Event();
                newEvent.AccountCode    = model.AccountCode;
                newEvent.CallerId       = model.CallerId;
                newEvent.EventCode      = model.EventCode;
                newEvent.Qualifier      = model.Qualifier;
                newEvent.Zone           = model.Zone;
                newEvent.LineId         = "C4";
                newEvent.TestMode       = model.TestMode;
                newEvent.UnitModel      = model.UnitModel;
                newEvent.EventTimeStamp = DateTime.Now;
                newEvent.EventZone      = model.EventCode + model.Zone;
                newEvent.ServiceId      = (int)External_Service.MYTREX;
                db.Events.Add(newEvent);
                await db.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }
Esempio n. 2
0
        public async Task <IHttpActionResult> SubmitEvent()
        {
            try
            {
                var db        = new TunstallDatabaseContext();
                var modelData = await Request.Content.ReadAsStringAsync();

                var model = modelData.FromXML <Alarm>();

                var newEvent = new TunstallDAL.Entities.Event();
                newEvent.AccountCode     = model.AccountNumber;
                newEvent.CallerId        = model.Ani;
                newEvent.EventCode       = model.Zone;
                newEvent.Zone            = model.Zone;
                newEvent.LineId          = "C4";
                newEvent.VerificationURL = model.VerificationUrl;
                newEvent.EventTimeStamp  = DateTime.Now;
                newEvent.ServiceId       = (int)External_Service.ANELTO;

                if (model.Location != null)
                {
                    newEvent.Latitude  = double.Parse(model.Location.Latitude);
                    newEvent.Longitude = double.Parse(model.Location.Longitude);
                }

                db.Events.Add(newEvent);
                await db.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }
Esempio n. 3
0
        public async Task <bool> ProcessEventQueue()
        {
            var isDemoMode = ConfigurationManager.AppSettings["IsDemoMode"].Parse <bool>();
            var logFile    = ConfigurationManager.AppSettings["LogFile"];
            var logger     = new LogHelper(logFile);
            List <EventModel> eventModels = null;
            bool processEvents            = true;

            logger.LogMessage(LogMessageType.INFO, "****** Processing events ******");

            try
            {
                var events = await _db.Events.Where(e => e.IsProcessed == false).ToListAsync();

                eventModels = events.Select(e => new EventModel()
                {
                    Id          = e.Id,
                    AccountCode = e.AccountCode,
                    CallerId    = e.CallerId,
                    EventCode   = e.ServiceId == 2 ? e.EventCode : e.EventZone,
                    Qualifier   = e.Qualifier,
                    Zone        = e.Zone,
                    LineId      = e.LineId,
                    UnitModel   = e.UnitModel,
                    ServiceId   = e.ServiceId
                })
                              .ToList();

                events.ForEach(e => e.IsProcessed = true);
                await _db.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                logger.LogException(ex);
                processEvents = false;
            }

            if (processEvents)
            {
                logger.LogMessage(LogMessageType.INFO, string.Format("Processing {0} records", eventModels.Count));

                //call CallRaiser.exe for each transaction
                foreach (var e in eventModels)
                {
                    logger.LogMessage(LogMessageType.INFO, string.Format("Processing Account: {0} Phone: {1}\r\n", e.AccountCode, e.CallerId));

                    int  i      = 0;
                    bool result = int.TryParse(e.AccountCode, out i);
                    if (result)
                    {
                        try
                        {
                            using (var db = new TunstallDatabaseContext())
                            {
                                logger.LogMessage(LogMessageType.INFO, string.Format("Searching EventCodeMapping for event code {0}", e.EventCode));
                                var eventMapping = db.EventCodeMappings.Where(m => m.ExternalEventCode == e.EventCode).FirstOrDefault();
                                if (eventMapping != null)
                                {
                                    string cmd = string.Format("CallRaiser.exe u:{0};c:{1};p:{2};n:{3}", e.AccountCode, eventMapping.InternalEventCode, e.LineId, StripPhoneNumber(e.CallerId));
                                    logger.LogMessage(LogMessageType.INFO, cmd);

                                    if (!isDemoMode)
                                    {
                                        //C:\PNC4\runs
                                        var p = new Process();
                                        p.StartInfo.WorkingDirectory       = @"C:\PNC4\runs\";
                                        p.StartInfo.FileName               = @"C:\PNC4\runs\CallRaiser.exe";
                                        p.StartInfo.Arguments              = string.Format("u:{0};c:{1};p:{2};n:{3}", e.AccountCode, eventMapping.InternalEventCode, e.LineId, StripPhoneNumber(e.CallerId));
                                        p.StartInfo.RedirectStandardOutput = true;
                                        p.StartInfo.CreateNoWindow         = true;
                                        p.StartInfo.UseShellExecute        = false;
                                        p.Start();
                                        p.WaitForExit();
                                        logger.LogMessage(LogMessageType.INFO, string.Format("Call raised to PNC for account {0}, phone: {1}", e.AccountCode, e.CallerId));
                                    }
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            logger.LogMessage(LogMessageType.INFO, string.Format("Failed to process event Id {0}, {1}. ERROR:{2} ", e.Id, e.ToString(), ex.Message));
                        }
                    }
                    else
                    {
                        logger.LogMessage(LogMessageType.ERROR, string.Format("{0} is not a valid account code", e.AccountCode));
                    }
                }
            }

            logger.LogMessage(LogMessageType.INFO, "****** Completed events ******");
            return(processEvents);
        }
Esempio n. 4
0
 EventService()
 {
     _db = new TunstallDatabaseContext();
 }