示例#1
0
        public static IList <OapSearchCheckListQuestionFlatModel> ToRelatedQuestionFlattenedModel(this IEnumerable <RigOapChecklistQuestion> rigRelatedQuestionList, int questionId, OapAuditClient auditClient, OapChecklistFindingClient checklistFindingClient)
        {
            var layoutList = new List <OapSearchCheckListQuestionFlatModel>();

            foreach (var item in rigRelatedQuestionList)
            {
                var protocol = auditClient.GetCompleteProtocolAsync(item.RigOapChecklistId).Result.Result.Data;

                if (protocol == null)
                {
                    continue;
                }

                var rigQuestion = protocol.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 protocol.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(protocol.Id, protocol.RigId.ToString(), protocol.RigChecklistUniqueId, protocol.OapchecklistId, protocol.ChecklistDateTime, protocol.Title, gst?.Group?.Name, gst?.SubGroup?.Name, gst?.Topic?.Topic, item.OapChecklistQuestionId ?? 0, rigQuestion?.OapChecklistQuestion.Question, answers, qFindings.FirstOrDefault()?.FindingType?.Name);

                if (!layoutList.Any(l => l.RigOapChecklistId == relatedQuestion.RigOapChecklistId && l.QuestionId == relatedQuestion.QuestionId))
                {
                    layoutList.Add(relatedQuestion);
                }
            }
            return(layoutList);
        }
示例#2
0
        public static IList <OapPreviousProtocolsFlatModel> ToPreviousProtocolsModel(this IEnumerable <RigOapChecklist> rigChecklistList, ReviewSearchModel model, OapAuditClient auditClient, OapChecklistFindingClient checklistFindingClient)
        {
            var layoutList = new List <OapPreviousProtocolsFlatModel>();

            foreach (var item in rigChecklistList)
            {
                var protocol = auditClient.GetCompleteProtocolAsync(item.Id).Result?.Result?.Data;

                if (protocol == null)
                {
                    continue;
                }


                var count    = 0;
                var question = protocol.Questions.ToList();

                question.ForEach((q) =>
                {
                    var v = q.Answers.Where(a => a.RigOapChecklistQuestionId == q.Id).FirstOrDefault().Value;

                    if (v == "N" || v == "NA")
                    {
                        count++;
                    }
                });

                var previousProtocols = new OapPreviousProtocolsFlatModel(protocol.Id, protocol.RigChecklistUniqueId, protocol.OapChecklist.OapType.Name, protocol.Title, protocol.Assessors?.Where(a => a.IsLead == true)?.FirstOrDefault()?.User?.Name, protocol.ChecklistDateTime.ToString("dd-MMM-yyyy"), count.ToString(), protocol.Status, "Review");

                if (!layoutList.Any(l => l.ChecklistId == previousProtocols.ChecklistId))
                {
                    layoutList.Add(previousProtocols);
                }
            }

            return(layoutList);
        }