Пример #1
0
        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);
        }
Пример #2
0
        public ActionResult UpdateRigChecklist(RigOapChecklist model)
        {
            // TODO: Add update logic here
            var response = RigOapChecklistClient.UpdateRigChecklistAsync(model).Result;

            return(RedirectToAction("Index"));
        }
Пример #3
0
        public static IList <OIMBehavioralBasedSafetyFlatModel> ToBBSFlattenedModel(RigOapChecklistClient rigOapChecklistClient, string checklistType, string checklistSubType, string status, string verifierRole)
        {
            var checklist = rigOapChecklistClient.GetAllInWorkflowByTypeSubTypeCodeStatusAsync(checklistType, checklistSubType, status, verifierRole).Result?.Result?.Data;

            var bbsFSOFlatModelList = new List <OIMBehavioralBasedSafetyFlatModel>();

            checklist.ToList().ForEach((c) =>
            {
                var group = c.OapChecklist.Groups?.FirstOrDefault(g => g.OapChecklistId == c.OapChecklist.Id);

                var questions = c.Questions;

                var nonConformityCount = 0;
                if (questions.Any())
                {
                    nonConformityCount = questions.Count(f => f.Answers.FirstOrDefault()?.Value == "N");
                }

                var flatList = new OIMBehavioralBasedSafetyFlatModel(c.Id,
                                                                     c.OapChecklist.Id,
                                                                     c.PositionId,
                                                                     c.OwnerId,
                                                                     c.LocationId,
                                                                     c.ChecklistDateTime,
                                                                     nonConformityCount);


                bbsFSOFlatModelList.Add(flatList);
            });

            return(bbsFSOFlatModelList);
        }
Пример #4
0
        public async Task <ActionResult> AddScheduledChecklist(int numberOfDays, DateTime StartingAt, string title, string description)
        {
            if (StartingAt != null && numberOfDays > 0)
            {
                var lifeSaverChecklist = OapChecklistClient.GetByNameAsync("Life Savers").Result?.Result?.Data;
                if (lifeSaverChecklist == null)
                {
                    throw new Exception("The life savers checklist was not found. Please contact the development support team");
                }

                for (int i = 0; i < numberOfDays; i++)
                {
                    var             checklistDate = StartingAt.AddDays(i);
                    RigOapChecklist checklist     = new RigOapChecklist()
                    {
                        Status            = "Open",
                        ChecklistDateTime = checklistDate,
                        OapchecklistId    = lifeSaverChecklist.Id,
                        IsAutoScheduled   = true,
                        //RigId = UtilitySystem.Settings.RigId.ToString(),
                        Title           = title,
                        Description     = description,
                        CreatedDateTime = DateTime.UtcNow
                    };

                    await RigOapChecklistClient.AddRigChecklistAsync(checklist);
                }
            }
            return(DisplayLifeSaverScheduleAbdJobs());
        }
Пример #5
0
        protected virtual ObservableCollection <RigOapChecklist> GetRigChecklistData(bool useTypeSubTypeCode = false)
        {
            var rigChecklistData = (useTypeSubTypeCode) ?
                                   RigOapChecklistClient.GetAllByTypeSubTypeCodeStatusAsync(ChecklistType, ChecklistSubType, ChecklistStatus).Result?.Result?.Data :
                                   RigOapChecklistClient.GetAllByTypeSubTypeStatusAsync(ChecklistType, ChecklistSubType, ChecklistStatus).Result?.Result?.Data;

            return(rigChecklistData);
        }
Пример #6
0
 public async Task <ActionResult> DeleteRigChecklist(RigOapChecklist model)
 {
     if (model.Id != Guid.Empty)
     {
         var response = await RigOapChecklistClient.DeleteRigOapChecklistAsync(model.Id);
     }
     return(RedirectToAction("Index"));
 }
Пример #7
0
        public async Task <ActionResult> AddChecklist(RigOapChecklist model)
        {
            //model.RigId = OapUtilities.GetRigId();
            model.CreatedDateTime = DateTime.UtcNow;

            var response = await RigOapChecklistClient.AddRigChecklistAsync(model);

            return(RigChecklists());
        }
Пример #8
0
        public IEnumerable <LifesaverComplianceViewModel> GetLifesaverCompliance()
        {
            var singleRowList = new List <LifesaverComplianceViewModel>();

            var lifesaverViewModel = PrepareComplianceViewModel(RigOapChecklistClient.GetLifesaverComplianceAsync().Result?.Result?.Data);

            singleRowList.Add(lifesaverViewModel);

            return(singleRowList);
        }
Пример #9
0
        // GET: IRMA/Checklist/1
        public ActionResult Checklist(int id)
        {
            RigOapChecklist checklist = RigOapChecklistClient.GetByUniqueIdAsync(id).Result?.Result?.Data;

            if (checklist == null)
            {
                return(RedirectToAction("Index"));
            }

            return(View(checklist));
        }
Пример #10
0
        public ActionResult FSOPendingReviewPartial()
        {
            ViewBag.GridName                     = "FSOPendingGrid";
            ViewBag.GridTitle                    = "Formal Safety Observations Pending Review";
            ViewBag.GridLinkController           = "FSO";
            ViewBag.GridControllerCallBackAction = "FSOPendingReviewPartial";

            var fsoList       = RigOapChecklistClient.GetAllByTypeStatusAsync("Formal Safety Observation", "Pending").Result?.Result.Data;
            var viewModelList = GenerateChecklistViewModelList(fsoList);

            return(PartialView("ChecklistPendingReviewPartial", viewModelList));
        }
Пример #11
0
        public ActionResult LifeSaversPendingReviewPartial()
        {
            ViewBag.GridName                     = "LSPendingGrid";
            ViewBag.GridTitle                    = "Ensco Life Savers Pending Review";
            ViewBag.GridLinkController           = "LifeSaver";
            ViewBag.GridControllerCallBackAction = "LifeSaversPendingReviewPartial";

            var lifeSaversList = RigOapChecklistClient.GetAllByTypeStatusAsync("Life Savers", "Pending").Result?.Result.Data;
            var viewModelList  = GenerateChecklistViewModelList(lifeSaversList);

            return(PartialView("ChecklistPendingReviewPartial", viewModelList));
        }
Пример #12
0
        public ActionResult CAVPendingReviewPartial()
        {
            ViewBag.GridName                     = "CAVPendingGrid";
            ViewBag.GridTitle                    = "Critical Area Verifications Pending Review";
            ViewBag.GridLinkController           = "CriticalAreaVerification";
            ViewBag.GridControllerCallBackAction = "CAVPendingReviewPartial";

            var cavList = RigOapChecklistClient.GetAllByTypeStatusAsync("Critical Area Verification", "Pending").Result?.Result.Data;

            var viewModelList = GenerateChecklistViewModelList(cavList);

            return(PartialView("ChecklistPendingReviewPartial", viewModelList));
        }
Пример #13
0
        public virtual async Task <ActionResult> CreateRigChecklist(RigOapChecklist model)
        {
            // TODO: Add insert logic here
            model.RigId = "0";
            var response = await RigOapChecklistClient.AddRigChecklistAsync(model);

            if (ModelState.ContainsKey("RigChecklistUniqueId")) // Handled in the API
            {
                ModelState["RigChecklistUniqueId"].Errors.Clear();
            }

            return(RigChecklists());
        }
Пример #14
0
        public GenericDashboardController() : base()
        {
            RigOapChecklistClient = new RigOapChecklistClient(GetApiBaseUrl(), Client);

            OapChecklistClient = new OapChecklistClient(GetApiBaseUrl(), Client);

            PeopleClient = new PeopleClient(GetApiBaseUrl(), Client);

            Owner = CommonUtilities.GetUsers(PeopleClient);

            ChecklistType = "BRC";

            ChecklistSubType = "All";

            ChecklistStatus = "Open";

            FormType = "All";
        }
Пример #15
0
        public static RigOapChecklist UpdateChecklist(RigOapChecklistClient client, RigOapChecklist checklist, GridRouteTypes type, int originalHasCode, string gridErrorKey, ViewDataDictionary viewData)
        {
            if (client == null)
            {
                viewData[gridErrorKey] = "Rig Oap client is null. Refresh Page and try again. Contact system administrator if the error persists";
                return(checklist);
            }
            var currentHashCode = checklist.GetHashCode();

            if (currentHashCode != originalHasCode)
            {
                try
                {
                    switch (type)
                    {
                    case GridRouteTypes.Add:
                    case GridRouteTypes.Update:
                    case GridRouteTypes.Delete:
                        var updateResponse = client.UpdateRigChecklistAsync(checklist).Result;

                        if (updateResponse.Result.Errors.Any())
                        {
                            DisplayGridErrors(updateResponse.Result.Errors, gridErrorKey, viewData);
                        }
                        else
                        {
                            checklist = updateResponse.Result.Data;
                        }

                        break;
                    }
                }
                catch (Exception ex)
                {
                    viewData[gridErrorKey] = ex.Message;
                }

                return(checklist);
            }

            return(checklist);
        }
Пример #16
0
        public ActionResult BACPendingReviewPartial()
        {
            ViewBag.GridName           = "BACPendingGrid";
            ViewBag.GridTitle          = "Barrier Authority Checklists Pending Review";
            ViewBag.GridLinkController = "BarrierAuthority";

            var bacList = RigOapChecklistClient.GetAllByTypeStatusAsync("Barrier Authority Checklist", "Pending").Result?.Result.Data;

            IList <OIMDashboardBACGridViewModel> viewModelList = new List <OIMDashboardBACGridViewModel>();

            foreach (var bacChecklist in bacList)
            {
                var           leadAssessor         = bacChecklist.Assessors.FirstOrDefault(a => a.IsLead);
                UserModel     assessor             = null;
                PositionModel leadAssessorPosition = null;

                if (leadAssessor != null && leadAssessor.UserId != 0)
                {
                    assessor             = ServiceSystem.GetUser(leadAssessor.UserId);
                    leadAssessorPosition = ServiceSystem.GetUserPosition(leadAssessor.UserId);
                }

                OIMDashboardBACGridViewModel viewModel = new OIMDashboardBACGridViewModel()
                {
                    ChecklistGuid = bacChecklist.Id,
                    Id            = bacChecklist.RigChecklistUniqueId,
                    Location      = bacChecklist.LocationName,
                    Title         = bacChecklist.Title,
                    Assessor      = assessor?.DisplayName,
                    Position      = leadAssessorPosition?.Name
                };

                foreach (var question in bacChecklist.Questions)
                {
                    foreach (var answer in question.Answers)
                    {
                        if (answer.Value == "N")
                        {
                            switch (answer.Ordinal)
                            {
                            case 0:
                                viewModel.Day1.ConformityCount++;
                                break;

                            case 1:
                                viewModel.Day2.ConformityCount++;
                                break;

                            case 2:
                                viewModel.Day3.ConformityCount++;
                                break;

                            case 3:
                                viewModel.Day4.ConformityCount++;
                                break;

                            case 4:
                                viewModel.Day5.ConformityCount++;
                                break;

                            case 5:
                                viewModel.Day6.ConformityCount++;
                                break;

                            case 6:
                                viewModel.Day7.ConformityCount++;
                                break;

                            default:
                                break;
                            }
                        }
                    }
                }

                viewModelList.Add(viewModel);
            }

            return(PartialView("BarrierAuthorityPendingReviewPartial", viewModelList));
        }
Пример #17
0
        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);
        }
Пример #18
0
 private IEnumerable <RigOapChecklist> GetOpenFsoChecklists(OapChecklist corpFSOChecklist)
 {
     return(RigOapChecklistClient.GetOpenFsoChecklistsAsync(corpFSOChecklist.Id).Result?.Result?.Data);
 }
Пример #19
0
        public static IList <OapSearchCheckListQuestionFlatModel> ToRelatedQuestionFlattenedModel(this IEnumerable <RigOapChecklistQuestion> rigRelatedQuestionList, int questionId, RigOapChecklistClient checklistClient, OapChecklistFindingClient checklistFindingClient)
        {
            var layoutList = new List <OapSearchCheckListQuestionFlatModel>();

            foreach (var item in rigRelatedQuestionList)
            {
                var checklist = checklistClient.GetCompleteChecklistAsync(item.RigOapChecklistId).Result.Result.Data;

                if (checklist == null)
                {
                    continue;
                }

                var rigQuestion = checklist.Questions.FirstOrDefault(rq => rq.Id == item.Id);

                var qFindings = checklistFindingClient.GetAllFindingsForQuestionAsync(rigQuestion.Id).Result.Result.Data;

                var rigQuestionAnswers = rigQuestion?.Answers?.ToList();

                StringBuilder sb = new StringBuilder();
                sb.Append("{ ");
                foreach (var questionAnswer in rigQuestionAnswers)
                {
                    var answer = questionAnswer.Value;
                    answer = (answer == "Y") ? "YES".Translate() : ((answer == "N") ? "NO".Translate() : " ");
                    sb.Append(answer);

                    if (rigQuestionAnswers.Count > 1)
                    {
                        sb.Append(", ");
                    }
                }

                sb.Append(" }");
                var answers = sb.ToString();

                var gst = (from g in checklist.OapChecklist.Groups
                           from sg in g.SubGroups
                           from t in sg.Topics
                           from q in t.Questions
                           where q.Id == rigQuestion.OapChecklistQuestionId
                           select new { Group = g, SubGroup = sg, Topic = t }).FirstOrDefault();

                var relatedQuestion = new OapSearchCheckListQuestionFlatModel(checklist.Id, checklist.RigId.ToString(), checklist.RigChecklistUniqueId, checklist.OapchecklistId, checklist.ChecklistDateTime, checklist.Title, gst?.Group?.Name, gst?.SubGroup?.Name, gst?.Topic?.Topic, item.OapChecklistQuestionId ?? 0, rigQuestion?.Question, answers, qFindings.FirstOrDefault()?.FindingType?.Name);

                if (!layoutList.Any(l => l.RigOapChecklistId == relatedQuestion.RigOapChecklistId && l.QuestionId == relatedQuestion.QuestionId))
                {
                    layoutList.Add(relatedQuestion);
                }
            }
            return(layoutList);
        }