Exemple #1
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();
            }
        }