Beispiel #1
0
        private Data GenerateAlarmRequest(CloseAlarmRequest request)
        {
            //hook this up to the duncan web service to create the event
            //create the request

            var dataRequest = new Data {
                Request = new DataRequest {
                    ActiveAlarms = new DataRequestActiveAlarms[1]
                }
            };

            dataRequest.Request.ActiveAlarms[0] = new DataRequestActiveAlarms
            {
                TimeOfNotification          = request.LocalTime,
                TimeOfNotificationSpecified = true,
                ActiveAlarm = new DataRequestActiveAlarmsActiveAlarm[1]
            };

            dataRequest.Request.ActiveAlarms[0].ActiveAlarm[0] = new DataRequestActiveAlarmsActiveAlarm
            {
                cid       = request.CustomerId.ToString(),
                aid       = request.AreaId.ToString(),
                mid       = request.AssetId.ToString(),
                EventUID  = request.EventUID.ToString(),
                EventCode = request.EventCode.ToString()
            };

            return(dataRequest);
        }
Beispiel #2
0
        /// <summary>
        /// Update the status of each event to be "Rejected" WorkOrderEventStatus.Rejected
        /// </summary>
        /// <param name="eventIds"></param>
        public void ResolveEvents(long[] eventIds, DateTime localTime, bool vandalism = false)
        {
            if (eventIds == null)
            {
                return;
            }
            //for each event, set the status to closed., as they are closing out individual events on a work order
            if (eventIds.Any())
            {
                var webServiceFactory = new WebServiceFactory();
                foreach (var eventId in eventIds)
                {
                    var fmworkOrderEvent =
                        MaintenanceEntities.FMWorkOrderEvents.FirstOrDefault(x => x.WorkOrderEventId == eventId);
                    if (fmworkOrderEvent != null)
                    {
                        fmworkOrderEvent.Vandalism = vandalism;
                        //now that we have closed them on our side, we need to close them on Duncans side, so for each event, send the request off to duncan to close this alarm as well.
                        //create the event  via the web service factory.
                        //create the close Alarm Request object to pass to the web services
                        var closeAlarmRequest = new CloseAlarmRequest
                        {
                            AreaId     = fmworkOrderEvent.WorkOrder.AreaId,
                            AssetId    = fmworkOrderEvent.WorkOrder.MeterId,
                            CustomerId = fmworkOrderEvent.WorkOrder.CustomerId,
                            EventCode  = fmworkOrderEvent.EventCode,
                            EventUID   = fmworkOrderEvent.EventId,
                            LocalTime  = localTime,
                        };
                        var closeAlarmResponse = webServiceFactory.CloseAlarm(closeAlarmRequest);
                        //set the status and if there were errors, report them
                        //first, check to see if it is valid. if it is, then

                        if (closeAlarmResponse.Closed)
                        {
                            fmworkOrderEvent.Status = (int)WorkOrderEventStatus.Closed;
                        }
                        else
                        {
                            fmworkOrderEvent.Status = (int)WorkOrderEventStatus.Open;
                            var eventResource = (new ResourceFactory()).GetLocalizedTitle(ResourceTypes.Glossary, "Event(s) not closed:");
                            if (string.IsNullOrEmpty(ErrorMessage))
                            {
                                ErrorMessage = string.Format(eventResource + " {0}", fmworkOrderEvent.WorkOrderEventId);
                            }
                            else
                            {
                                ErrorMessage += string.Format(", {0}", fmworkOrderEvent.WorkOrderEventId);
                            }
                        }
                    }
                }
                MaintenanceEntities.SaveChanges();
            }
        }
Beispiel #3
0
        /// <summary>
        /// Closes the alarm on Duncan sside and returns a response if it was successful or not
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public CloseAlarmResponse CloseAlarm(CloseAlarmRequest request)
        {
            //fix up the response with some default values
            var alarmResponse = new CloseAlarmResponse {
                IsValid = false
            };

            var dataRequest = GenerateAlarmRequest(request);

            //now that we have our data request, we need to send it to duncan and get the response.
            string strUrl = ConfigurationManager.AppSettings[Constants.FieldMaintenance.WebServiceCloseAlarmName];
            var    serializedDataRequest = Serialize(dataRequest);

            if (string.IsNullOrEmpty(serializedDataRequest))
            {
                return(alarmResponse);
            }

            byte[] dataByte = StringToByteArray(serializedDataRequest);
            var    response = PostRequest(strUrl, dataByte);

            return(GetAlarmResponse(response, alarmResponse));
        }