예제 #1
0
        /// <summary>
        /// Creates and returns a new object for the GET_EVENTS_EQUIPMENT table.
        /// </summary>
        /// <param name="eventsAuto"></param>
        /// <param name="equipmentAuto"></param>
        /// <param name="smu"></param>
        /// <param name="ltd"></param>
        /// <returns></returns>
        public GET_EVENTS_EQUIPMENT createEquipmentEvent(long eventsAuto, long equipmentAuto, int smu, int ltd)
        {
            GET_EVENTS_EQUIPMENT equipmentEvent = new GET_EVENTS_EQUIPMENT();

            equipmentEvent.equipment_auto = equipmentAuto;
            equipmentEvent.events_auto    = eventsAuto;
            equipmentEvent.smu            = smu;
            equipmentEvent.ltd            = ltd;

            return(equipmentEvent);
        }
예제 #2
0
        /// <summary>
        /// Find and return the previous equipment event given the equipment Id
        /// and an event date.
        /// </summary>
        /// <param name="_gContext"></param>
        /// <param name="equipmentAuto"></param>
        /// <param name="eventDate"></param>
        /// <returns></returns>
        public GET_EVENTS_EQUIPMENT findPreviousEquipmentEvent(GETContext _gContext, long equipmentAuto, DateTime eventDate)
        {
            GET_EVENTS_EQUIPMENT result     = new GET_EVENTS_EQUIPMENT();
            DateTime             eventDate2 = new DateTime(eventDate.Year, eventDate.Month, eventDate.Day, 23, 59, 59);

            result = (from ee in _gContext.GET_EVENTS_EQUIPMENT
                      join ge in _gContext.GET_EVENTS
                      on ee.events_auto equals ge.events_auto
                      where ee.equipment_auto == equipmentAuto &&
                      ge.event_date <= eventDate2 &&
                      ge.recordStatus == 0
                      orderby ge.event_date descending, ge.events_auto descending
                      select ee).FirstOrDefault();

            return(result);
        }
예제 #3
0
파일: Action.cs 프로젝트: hari81/BLL
        protected bool UpdateGETByAction(IEquipmentActionRecord actionRecord, ref string OperationResult)
        {
            bool result = false;

            var getEventsByUC = _gContext.GET_EVENTS.Where(m => m.UCActionHistoryId == actionRecord.Id);

            if (getEventsByUC.Count() > 0) //Means update
            {
                var getEventTobeUpdated = getEventsByUC.First();
                //All the logic for the lifes to be updated based on getEventTobeUpdated
            }
            else
            { //Insert
                GET_EVENTS GetEvents = new GET_EVENTS
                {
                    user_auto     = actionRecord.ActionUser.Id,
                    action_auto   = (int)GETActionType.UndercarriageAction,
                    event_date    = actionRecord.ActionDate,
                    comment       = actionRecord.Comment,
                    cost          = actionRecord.Cost,
                    recorded_date = actionRecord.ActionDate
                };

                GET_EVENTS_EQUIPMENT GetEventsEquipment = new GET_EVENTS_EQUIPMENT
                {
                    equipment_auto = actionRecord.EquipmentId,
                    smu            = actionRecord.ReadSmuNumber,
                    ltd            = 0, // Check this.
                    events_auto    = 0  // Check this.
                };

                //GET_EVENTS_IMPLEMENT GetEventsImplement = new GET_EVENTS_IMPLEMENT
                //{

                //};

                //GET_EVENTS_COMPONENT GetEventsComponent = new GET_EVENTS_COMPONENT
                //{

                //};
            }
            return(result);
        }
예제 #4
0
        public ActionStatus Start()
        {
            bool SMUValidationPassed = false;

            if (Status == ActionStatus.Close)
            {
                int iEquipmentIdAuto = longNullableToint(Params.EquipmentId);

                // Check that the Action validation passes before starting.
                if (ActionSMUValidation(iEquipmentIdAuto, Params.MeterReading, Params.EventDate))
                {
                    string log = "";
                    _actionRecord = UpdateEquipmentByAction(_actionRecord, ref log);
                    ActionLog    += log;
                    Message       = base.Message;

                    if (_actionRecord != null && _actionRecord.Id != 0)
                    {
                        _actionRecord.TypeOfAction = ActionType.GETAction;
                    }

                    SMUValidationPassed = true;
                }
                else
                {
                    Status  = ActionStatus.Invalid;
                    Message = "SMU validation failed!";
                }

                if (SMUValidationPassed)
                {
                    int changesSaved = 0;
                    try
                    {
                        // Create a record for the Equipment setup event.
                        GET_EVENTS getEvents = new GET_EVENTS
                        {
                            user_auto     = Params.UserAuto,
                            action_auto   = (int)Params.ActionType,
                            recorded_date = Params.RecordedDate,
                            event_date    = Params.EventDate,
                            comment       = Params.Comment,
                            cost          = Params.Cost
                        };
                        _gContext.GET_EVENTS.Add(getEvents);
                        changesSaved = _gContext.SaveChanges();

                        if (changesSaved > 0)
                        {
                            // Create a new equipment event record.
                            GET_EVENTS_EQUIPMENT getEventsEquipment = new GET_EVENTS_EQUIPMENT
                            {
                                events_auto    = getEvents.events_auto,
                                equipment_auto = Params.EquipmentId,
                                smu            = Params.MeterReading,
                                ltd            = Params.EquipmentLTD
                            };

                            _gContext.GET_EVENTS_EQUIPMENT.Add(getEventsEquipment);
                            changesSaved = _gContext.SaveChanges();

                            // Link up the GET Event record with the UC Action Taken History record.
                            if (changesSaved > 0)
                            {
                                int GETEventsId          = (int)getEvents.events_auto;
                                int ActionTakenHistoryId = _actionRecord.Id;
                                var eqEntity             = _context.EQUIPMENTs.Find(Params.EquipmentId);
                                var UCHistoryRecord      = _context.ACTION_TAKEN_HISTORY.Find(ActionTakenHistoryId);
                                if (UCHistoryRecord != null)
                                {
                                    UCHistoryRecord.GETActionHistoryId    = GETEventsId;
                                    UCHistoryRecord.recordStatus          = (int)RecordStatus.Available;
                                    _context.Entry(UCHistoryRecord).State = EntityState.Modified;
                                }
                                if (eqEntity != null)
                                {
                                    eqEntity.ActionTakenHistoryId  = _actionRecord.Id;
                                    _context.Entry(eqEntity).State = EntityState.Modified;
                                }
                                getEvents.UCActionHistoryId = ActionTakenHistoryId;

                                _context.SaveChanges();
                                _gContext.SaveChanges();

                                Status = ActionStatus.Started;
                            }
                        }
                    }
                    catch (Exception ex1)
                    {
                    }
                }
                else
                {
                    Status = ActionStatus.Failed;
                }
            }
            Available();
            return(Status);
        }
예제 #5
0
        public ActionStatus Start()
        {
            bool SMUValidationPassed = false;

            if (Status == ActionStatus.Close)
            {
                int iEquipmentIdAuto = longNullableToint(Params.EquipmentId);

                // Check that the Action validation passes before updating UC.
                if (ActionSMUValidation(iEquipmentIdAuto, Params.MeterReading, Params.EventDate))
                {
                    string log = "";
                    _actionRecord = UpdateEquipmentByAction(_actionRecord, ref log);
                    ActionLog    += log;
                    Message       = base.Message;

                    if (_actionRecord != null && _actionRecord.Id != 0)
                    {
                        _actionRecord.TypeOfAction = ActionType.GETAction;
                    }

                    SMUValidationPassed = true;
                }
                else
                {
                    Status  = ActionStatus.Invalid;
                    Message = "SMU validation failed!";
                }

                if (SMUValidationPassed)
                {
                    // Create an event record.
                    int actionAuto           = (int)GETActionType.Attach_Implement_to_Equipment;
                    var attachImplementEvent = eventManagement.createGETEvent(Params.UserId,
                                                                              actionAuto, Params.EventDate, Params.Comment, Params.Cost, Params.RecordedDate);
                    _gContext.GET_EVENTS.Add(attachImplementEvent);
                    int _changesSaved = _gContext.SaveChanges();

                    //Create Events for equipment, implement and components.
                    if (_changesSaved > 0)
                    {
                        GET_EVENTS           previousEvent          = new GET_EVENTS();
                        GET_EVENTS_EQUIPMENT previousEquipmentEvent = new GET_EVENTS_EQUIPMENT();

                        // Perform a cascading update for equipment, implement and components.
                        long SMUUpdateEventID = eventManagement.cascadeUpdateWithNewSMU(_gContext, Params.EquipmentId,
                                                                                        Params.MeterReading, Params.UserId, Params.EventDate, Params.Comment, Params.Cost);

                        // Error occurred.
                        if (SMUUpdateEventID < 0)
                        {
                            Status = IndicateFailedActionStatus(attachImplementEvent);
                            return(Status);
                        }
                        else
                        {
                            // Find the most recent (valid) smu and ltd for the equipment.
                            previousEquipmentEvent = eventManagement.findPreviousEquipmentEvent(_gContext, Params.EquipmentId, Params.EventDate);

                            if (previousEquipmentEvent == null)
                            {
                                Status  = IndicateFailedActionStatus(attachImplementEvent);
                                Message = "ERROR: No previous events found for this equipment.";
                                return(Status);
                            }

                            // No change to meter reading
                            if (SMUUpdateEventID == 0)
                            {
                                previousEvent = _gContext.GET_EVENTS.Find(previousEquipmentEvent.events_auto);
                            }
                            // SMU is changed
                            else
                            {
                                previousEvent          = _gContext.GET_EVENTS.Find(SMUUpdateEventID);
                                previousEquipmentEvent = _gContext.GET_EVENTS_EQUIPMENT
                                                         .Where(e => e.events_auto == SMUUpdateEventID)
                                                         .FirstOrDefault();
                            }
                        }


                        int SMU_difference = Params.MeterReading - previousEquipmentEvent.smu;

                        // Only perform an update for positive SMU changes.
                        if (SMU_difference >= 0)
                        {
                            // Create an equipment event.
                            var equipmentEvent = eventManagement.createEquipmentEvent(attachImplementEvent.events_auto,
                                                                                      Params.EquipmentId, Params.MeterReading, (previousEquipmentEvent.ltd + SMU_difference));
                            _gContext.GET_EVENTS_EQUIPMENT.Add(equipmentEvent);
                            int _changesSavedEquipmentEvent = _gContext.SaveChanges();

                            // Find the most recent (valid) ltd for the implement.
                            var previousImplementEvent = eventManagement.findPreviousImplementEvent(_gContext, Params.ImplementId, Params.EventDate);

                            if (previousImplementEvent == null)
                            {
                                // Mark the SMU Update event as invalid.
                                if (SMUUpdateEventID > 0)
                                {
                                    previousEvent.recordStatus = 1;
                                    _gContext.SaveChanges();
                                }

                                Status  = IndicateFailedActionStatus(attachImplementEvent);
                                Message = "ERROR: No previous events found for this implement.";
                                return(Status);
                            }

                            // Create an implement event.
                            var implementEvent = eventManagement.createImplementEvent((int)Params.ImplementId,
                                                                                      previousImplementEvent.ltd + SMU_difference, attachImplementEvent.events_auto);
                            _gContext.GET_EVENTS_IMPLEMENT.Add(implementEvent);
                            int _changesSavedImplementEvent = _gContext.SaveChanges();

                            if (_changesSavedImplementEvent > 0)
                            {
                                // Create an inventory event.
                                int statusAuto     = (int)GETInterfaces.Enum.InventoryStatus.On_Equipment;
                                var inventoryEvent = eventManagement.createInventoryEvent(implementEvent.implement_events_auto,
                                                                                          Params.JobsiteId, statusAuto, null);
                                _gContext.GET_EVENTS_INVENTORY.Add(inventoryEvent);
                                int _changesSavedInventoryEvent = _gContext.SaveChanges();

                                // Create component events.
                                bool componentEventsCreated = eventManagement.updateComponentsForGET(_gContext,
                                                                                                     Params.ImplementId, SMU_difference, attachImplementEvent.events_auto, Params.EventDate);
                                if (!componentEventsCreated)
                                {
                                    // Mark the SMU Update event as invalid.
                                    if (SMUUpdateEventID > 0)
                                    {
                                        previousEvent.recordStatus = 1;
                                        _gContext.SaveChanges();
                                    }

                                    Status  = IndicateFailedActionStatus(attachImplementEvent);
                                    Message = "ERROR: Unable to process this change for components.";
                                    return(Status);
                                }
                            }

                            // Now update the implement and inventory records.
                            if ((_changesSavedEquipmentEvent > 0) && (_changesSavedImplementEvent > 0))
                            {
                                // Attach to equipment
                                var implementRecord = _gContext.GET.Find(Params.ImplementId);
                                implementRecord.equipmentid_auto = Params.EquipmentId;
                                implementRecord.on_equipment     = true;
                                int _changesSavedImplement = _gContext.SaveChanges();

                                // Remove the entry from inventory since it's now on an equipment.
                                if (_changesSavedImplement > 0)
                                {
                                    var inventoryRecord = _gContext.GET_INVENTORY
                                                          .Where(g => g.get_auto == Params.ImplementId)
                                                          .FirstOrDefault();
                                    _gContext.GET_INVENTORY.Remove(inventoryRecord);
                                    int _changesSavedInventory = _gContext.SaveChanges();

                                    if (_changesSavedInventory > 0)
                                    {
                                        // Link up the GET Event record with the UC Action Taken History record.
                                        int GETEventsId          = (int)attachImplementEvent.events_auto;
                                        int ActionTakenHistoryId = _actionRecord.Id;

                                        var UCHistoryRecord = _context.ACTION_TAKEN_HISTORY.Find(ActionTakenHistoryId);
                                        if (UCHistoryRecord != null)
                                        {
                                            UCHistoryRecord.GETActionHistoryId = GETEventsId;
                                        }
                                        attachImplementEvent.UCActionHistoryId = ActionTakenHistoryId;

                                        _context.SaveChanges();
                                        _gContext.SaveChanges();

                                        Status = ActionStatus.Started;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        Status = ActionStatus.Failed;
                    }
                }
            }

            return(Status);
        }