public ActionResult UpdateChecklistHelp(OapChecklist model)
        {
            // TODO: Add update logic here
            var response = OapChecklistClient.UpdateOapChecklistAsync(model).Result;

            return(RedirectToAction("Index"));
        }
        private IEnumerable <OpenFSOGridModel> GetOpenFsoGridModelList(OapChecklist corpFSOChecklist)
        {
            IEnumerable <RigOapChecklist> checklists = GetOpenFsoChecklists(corpFSOChecklist);
            List <OpenFSOGridModel>       modelList  = new List <OpenFSOGridModel>();

            foreach (var checklist in checklists)
            {
                UserModel     user     = ServiceSystem.GetUser(checklist.OwnerId);
                PositionModel position = ServiceSystem.GetUserPosition(checklist.OwnerId);

                OpenFSOGridModel gridModel = new OpenFSOGridModel()
                {
                    Id                   = checklist.Id,
                    Title                = checklist.Title,
                    ChecklistDateTime    = checklist.ChecklistDateTime,
                    RigChecklistUniqueId = checklist.RigChecklistUniqueId,
                    Observer             = user?.DisplayName,
                    Position             = position?.Name,
                    Company              = user?.Company,
                    Location             = user?.RigId
                };

                modelList.Add(gridModel);
            }

            return(modelList);
        }
        private RigOapChecklist CreateFSOChecklist(int OwnerId, string Title, DateTime ChecklistDateTime)
        {
            OapChecklist oapChecklist = OapChecklistClient.GetByNameAsync("FSO Checklist").Result?.Result?.Data;

            if (oapChecklist == null)
            {
                ViewData["UpdateError"] = true;
                return(null);
            }

            RigOapChecklist checklist = new RigOapChecklist();

            checklist.CreatedBy         = UtilitySystem.CurrentUserName;
            checklist.OwnerId           = OwnerId;           //UtilitySystem.CurrentUserId;
            checklist.CreatedDateTime   = DateTime.UtcNow;
            checklist.ChecklistDateTime = ChecklistDateTime; //DateTime.UtcNow;
            checklist.Title             = Title;
            checklist.UpdatedDateTime   = DateTime.UtcNow;
            checklist.Status            = "Open";

            checklist.OapchecklistId = oapChecklist.Id;

            var newChecklist = RigOapChecklistClient.AddRigChecklistAsync(checklist).Result?.Result?.Data;

            return(newChecklist);
        }
示例#4
0
        private void AssignOwnerAsLeadAssessor(RigOapChecklist checklist, OapChecklist oapChecklist)
        {
            var ownerId = checklist.OwnerId;

            var leadAssessor = new RigOapChecklistAssessor()
            {
                UserId = ownerId,
                IsLead = true,
                Role   = VerifierRole.Assessor.ToString()
            };

            if (checklist.Assessors?.Any() == null)
            {
                checklist.Assessors = new List <RigOapChecklistAssessor>
                {
                    leadAssessor
                };

                return;
            }

            var assessors = checklist.Assessors.ToList();
            var assessor  = assessors.FirstOrDefault(a => a.IsLead && a.UserId != ownerId);

            if (assessor == null)
            {
                var order = (checklist.VerifiedBy.Any()) ? checklist.VerifiedBy?.Max(v => v.Order) ?? 0 : 0;

                checklist.Assessors.Add(leadAssessor);
            }
        }
示例#5
0
        private void AddWorkInstructions(Guid rigOapChecklistId, string rigId, OapChecklist oapChecklist)
        {
            var plantSubgroupId = (from g in oapChecklist.Groups
                                   from sg in g.SubGroups
                                   where sg.IsWorkInstructions == true
                                   select g.Id).FirstOrDefault();

            if (plantSubgroupId <= 0)
            {
                return;
            }

            var oChecklistWorkInstructions = OapChecklistWorkInstructionRepository.GetAllWorkInstructionByChecklistAndRigId(rigId, oapChecklist.Id);

            if (oChecklistWorkInstructions?.Any() == false)
            {
                return;
            }

            var rigWorkInstructions = (from wi in oChecklistWorkInstructions
                                       select new RigOapChecklistWorkInstruction()
            {
                RigOapChecklistId = rigOapChecklistId,
                WorkInstructionId = wi.Id
            }).ToList();

            rigWorkInstructions.ForEach(wi =>
            {
                RigOapChecklistWorkInstructionRepository.Add(wi);
            });
        }
        public async Task <ActionResult> CreateChecklist(OapChecklist model)
        {
            // TODO: Add insert logic here
            var response = await OapChecklistClient.AddOapChecklistAsync(model);

            return(RedirectToAction("Index"));
        }
        public ActionResult IndexOpenChecklistsPartial()
        {
            OapChecklist corpFSOChecklist            = GetCorporateFSOChecklist();
            IEnumerable <OpenFSOGridModel> modelList = GetOpenFsoGridModelList(corpFSOChecklist);

            return(PartialView("IndexOpenChecklistsPartial", modelList));
        }
示例#8
0
        private void AddPlantMonitoringActivities(Guid rigOapChecklistId, OapChecklist oapChecklist)
        {
            var plantSubgroupId = (from g in oapChecklist.Groups
                                   from sg in g.SubGroups
                                   where sg.IsPlantMonitoring == true
                                   select g.Id).FirstOrDefault();

            if (plantSubgroupId <= 0)
            {
                return;
            }

            var oChecklistADM = OapChecklistAssetDataManagementRepository.GetAssetsByGroup(plantSubgroupId);

            if (oChecklistADM?.Any() == false)
            {
                return;
            }

            var assets = (from oadm in oChecklistADM
                          select new RigOapChecklistGroupAsset()
            {
                RigOapChecklistId = rigOapChecklistId,
                AssetId = oadm.Id
            }).ToList();

            assets.ForEach(a =>
            {
                RigOapChecklistGroupAssetRepository.Add(a);
            });
        }
 private OapChecklist GetCorporateFSOChecklist()
 {
     if (corpFSOChecklist == null)
     {
         corpFSOChecklist = OapChecklistClient.GetByNameAsync("FSO Checklist").Result?.Result?.Data;
     }
     return(corpFSOChecklist);
 }
 public async Task <ActionResult> DeleteChecklist(OapChecklist model)
 {
     if (model.Id > 0)
     {
         var response = await OapChecklistClient.DeleteOapChecklistAsync(model.Id);
     }
     return(RedirectToAction("Index"));
 }
        public ActionResult TrainedObserversOnboard()
        {
            OapChecklist corpFSOChecklist = GetCorporateFSOChecklist();
            List <TrainedObserversViewModel> trainedObservers = GetTrainedObservers(corpFSOChecklist);

            ViewBag.TrainedObservers = trainedObservers;
            return(PartialView("TrainedObserversOnboardPartial"));
        }
        public WebApiResult <bool> UpdateOapChecklist([FromBody] OapChecklist list)
        {
            if (list == null)
            {
                throw new System.Exception("Argument is null");
            }

            return(TryCatch <UpdateChecklistRequest, bool>(new UpdateChecklistRequest(list)));
        }
示例#13
0
        private void AddQuestionsToChecklist(RigOapChecklist rigChecklist, OapChecklist oapChecklist)
        {
            if (
                ((rigChecklist.Questions == null) ||
                 ((rigChecklist.Questions != null) && !rigChecklist.Questions.Any()))
                &&
                (rigChecklist.Questions == null && oapChecklist.Groups.Any(g => g.SubGroups.Any(sg => sg.Topics.Any(t => t.Questions.Any()))))
                )
            {
                int answersCount = 1;
                switch (oapChecklist.OapType.Code)
                {
                case "BAC":
                    answersCount = 7;
                    break;

                case "OIM":
                case "OM":
                    answersCount = 4;
                    break;
                }

                rigChecklist.Questions = (from groups in oapChecklist.Groups
                                          from subGroups in groups.SubGroups
                                          from topics in subGroups.Topics
                                          from question in topics.Questions
                                          where subGroups != null & topics != null && question != null
                                          select new RigOapChecklistQuestion()
                {
                    Id = Guid.NewGuid(),
                    RigOapChecklist = rigChecklist,
                    RigOapChecklistId = rigChecklist.Id,
                    OapChecklistQuestionId = question.Id,
                    OapChecklistQuestion = question,
                    Answers = GetAnswers(answersCount)
                }).ToList();

                if (oapChecklist.OapType.Code == "BAC")
                {
                    var activeRigOapChecklistsWithNoAnswers = Repository.GetGetAllActiveChecklistsWithNoQuestions(rigChecklist.OapchecklistId);
                    ApplyBacNoControlLogic(rigChecklist, activeRigOapChecklistsWithNoAnswers);
                    var lastRigOapChecklist = Repository.GetLastChecklistWithQuestions(rigChecklist.OapchecklistId, rigChecklist.ChecklistDateTime);
                    ApplyBacNoControlLogic(rigChecklist, new List <RigOapChecklist>()
                    {
                        lastRigOapChecklist
                    });
                }
            }
        }
示例#14
0
 private void AddCommentsToChecklist(RigOapChecklist rigChecklist, OapChecklist oapChecklist)
 {
     if (((rigChecklist.Comments == null) || ((rigChecklist.Comments != null) && !rigChecklist.Comments.Any())) && (rigChecklist.Questions == null && oapChecklist?.Comments != null))
     {
         rigChecklist.Comments = (from c in oapChecklist.Comments
                                  select new RigOapChecklistComment()
         {
             Id = Guid.NewGuid(),
             RigOapChecklist = rigChecklist,
             RigOapChecklistId = rigChecklist.Id,
             OapChecklistCommentId = c.Id,
             OapChecklistComment = c
         }).ToList();
     }
 }
        // GET: IRMA/Fso
        public override ActionResult Index()
        {
            OapChecklist corpFSOChecklist = GetCorporateFSOChecklist();

            if (corpFSOChecklist == null)
            {
                ViewBag.CorpChecklistNull = "The definition of an FSO Checklist was not found in the system. Please create it in Corporate OAP first";
                return(View("Index"));
            }

            IEnumerable <OpenFSOGridModel> modelList = GetOpenFsoGridModelList(corpFSOChecklist);

            ViewBag.OpenChecklists = modelList;

            List <TrainedObserversViewModel> trainedObservers = GetTrainedObservers(corpFSOChecklist);

            ViewBag.TrainedObservers = trainedObservers;

            return(View("Index"));
        }
 private IEnumerable <RigOapChecklist> GetOpenFsoChecklists(OapChecklist corpFSOChecklist)
 {
     return(RigOapChecklistClient.GetOpenFsoChecklistsAsync(corpFSOChecklist.Id).Result?.Result?.Data);
 }
 public WebApiResult <OapChecklist> AddOapChecklist([FromBody] OapChecklist list)
 {
     return(TryCatch <AddChecklistRequest, OapChecklist>(new AddChecklistRequest(list)));
 }
 public UpdateChecklistRequest(OapChecklist checklist)
 {
     Checklist = checklist;
 }
        private List <TrainedObserversViewModel> GetTrainedObservers(OapChecklist corpFSOChecklist)
        {
            IIrmaServiceDataModel           pobDataModel = IrmaServiceSystem.GetServiceModel(IrmaConstants.IrmaPobModels.RigPersonnel); //.RigPersonnelHistory);
            IEnumerable <RigPersonnelModel> currentPob   = pobDataModel.GetItems("Status = 1", "Id").Cast <RigPersonnelModel>();

            IEnumerable <RigOapChecklist> fsoChecklistsLast40Days =
                RigOapChecklistClient.GetFsoChecklistByMinDateAsync(DateTime.Now.AddDays(-40).Date, corpFSOChecklist.Id).Result?.Result?.Data;

            List <TrainedObserversViewModel> trainedObservers = new List <TrainedObserversViewModel>();

            foreach (RigPersonnelModel person in currentPob)
            {
                UserModel userRecord = ServiceSystem.GetUser(person.PassportId);

                if (userRecord == null || !person.DateStart.HasValue)
                {
                    continue;
                }

                PositionModel position    = ServiceSystem.GetUserPosition(person.PassportId);
                TimeSpan      timeOnBoard = DateTime.Now.Subtract(person.DateStart.Value);

                TrainedObserversViewModel observer = new TrainedObserversViewModel()
                {
                    Name        = userRecord?.DisplayName,
                    Position    = position?.Name,
                    DaysOnboard = timeOnBoard.Days
                };

                int numberOfObservations = 0;
                IEnumerable <RigOapChecklist> checklistsWhileOnboard = fsoChecklistsLast40Days.Where(c => c.ChecklistDateTime >= person.DateStart);

                DateTime?lastObservationDate = null;
                foreach (RigOapChecklist fsoChecklist in checklistsWhileOnboard)
                {
                    if (fsoChecklist.Assessors == null)
                    {
                        continue;
                    }

                    IEnumerable <RigOapChecklistAssessor> checklistParticipations = fsoChecklist.Assessors.Where(a => a.UserId == userRecord.Id);
                    numberOfObservations += checklistParticipations.Count();

                    if (checklistParticipations.Count() > 0 && (lastObservationDate == null || fsoChecklist.ChecklistDateTime > lastObservationDate))
                    {
                        lastObservationDate = fsoChecklist.ChecklistDateTime;
                    }
                }

                observer.LastObservation = lastObservationDate;

                int  weeksOnBoard   = timeOnBoard.Days / 7;
                bool isInCompliance = true;
                if (timeOnBoard.Days > 7)
                {
                    isInCompliance = numberOfObservations > 0 ? (numberOfObservations / weeksOnBoard >= 1) : false;
                }

                observer.Observations   = numberOfObservations;
                observer.IsInCompliance = isInCompliance;

                trainedObservers.Add(observer);
            }

            return(trainedObservers);
        }
示例#20
0
 private void ProcessBACChecklist(RigOapChecklist rigOapChecklist, OapChecklist oapChecklist)
 {
     AddPlantMonitoringActivities(rigOapChecklist.Id, oapChecklist);
     // AddWorkInstructions(rigOapChecklist.Id, rigOapChecklist.RigId, oapChecklist);
     AddReviewersToChecklist(rigOapChecklist);
 }