public SurveysResultWithConclusionContent GetSurveysResults(long personId, long surveysResultId)
        {
            using (var surveysResultRepository = new BaseRepository<SurveysResult>())
            {
                if (!surveysResultRepository.Context.Persons.Any(x => x.Id == personId))
                {
                    throw new PersonDoesNotExistException();
                }

                SurveysResult surveysResult =
                    surveysResultRepository.Context.SurveysResults.Include("Conclusions").Include("Person").
                        FirstOrDefault(x => x.Id == surveysResultId);
                if (surveysResult == null)
                {
                    return null;
                }

                //if (surveysResult.Person.Id != personId)
                //{
                //    if (surveysResult.Parent != null)
                //    {
                //        if (surveysResult.Parent.Person.Id != personId)
                //        {
                //            throw new UserRightsException();
                //        }
                //    }
                //    else
                //    {
                //        if (!surveysResult.SurveysPersonsGroups.Any(x => x.Person.Id == personId))
                //        {
                //            throw new UnauthorizedException();
                //        }
                //    }
                //}

                //if (surveysResult.Person.Id != personId && surveysResult.Parent.Person.Id != personId
                //    && !surveysResult.SurveysPersonsGroups.Any(x => x.Person.Id == personId))
                //{
                //    throw new UserRightsException();
                //}

                Test test = surveysResultRepository.Context.Tests.FirstOrDefault(x => x.Id == surveysResult.MethodsId);

                // Form SurveysWithConclusion conctent
                SurveysResultWithConclusionContent content = new SurveysResultWithConclusionContent();
                content.Id = surveysResult.Id;
                content.PersonId = surveysResult.Person.Id;
                content.MethodsType = surveysResult.MethodsType;
                content.MethodsId = surveysResult.MethodsId;
                content.Date = surveysResult.Date;
                content.Name = surveysResult.Name;
                content.IsCompleted = surveysResult.IsCompleted;
                if(surveysResult.Parent != null)
                {
                    content.ParentId = surveysResult.Parent.Id;
                }
                content.Conclusions = new List<SurveysConclusionItem>();

                foreach (var conclusion in surveysResult.Conclusions)
                {
                    Object data = null;
                    if (test != null && !String.IsNullOrWhiteSpace(conclusion.Data))
                    {
                        data = ResultConverter.GenerateDataObject(test.CodeName, conclusion.Data);
                    }
                    if (data == null)
                    {
                        data = String.Empty;
                    }

                    SurveysConclusionItem conclusionItem = new SurveysConclusionItem()
                                                               {
                                                                   Id = conclusion.Id,
                                                                   SurveysResultId = conclusion.SurveysResult.Id,
                                                                   ServiceId = conclusion.Service.Id,
                                                                   Data = data,
                                                                   Ordered = conclusion.Ordered,
                                                                   Paid = conclusion.Paid,
                                                                   Processed = conclusion.Processed
                                                               };
                    content.Conclusions.Add(conclusionItem);
                }

                List<SurveysResult> childSurveysResults =
                    surveysResultRepository.GetAllItems.Where(x => x.Parent.Id == surveysResult.Id).ToList();
                if (childSurveysResults != null)
                {
                    content.SurveysResults = new List<SurveysResultWithConclusionContent>();
                    foreach (var childSurveysResult in childSurveysResults)
                    {
                        content.SurveysResults.Add(new SurveysResultWithConclusionContent()
                                                       {
                                                           Id = childSurveysResult.Id,
                                                           Date = childSurveysResult.Date,
                                                           MethodsId = childSurveysResult.MethodsId,
                                                           MethodsType = childSurveysResult.MethodsType,
                                                           Name = childSurveysResult.Name,
                                                           PersonId = childSurveysResult.Person.Id,
                                                           IsCompleted = childSurveysResult.IsCompleted,
                                                           ParentId = childSurveysResult.Parent.Id
                                                       });
                    }
                }

                return content;

            }
        }
Beispiel #2
0
        public CuratorSurveysWithChildContent GetCuratorSurveysResultsByPerson(long curatorId, long surveysResultId, long personId)
        {
            using (var surveysRepository = new BaseRepository<SurveysResult>())
            {
                Client curator = surveysRepository.Context.Clients.FirstOrDefault(x => x.Id == curatorId);
                if (curator == null)
                {
                    throw new UserDoesNotExistException();
                }

                SurveysResult surveysResult =
                   surveysRepository.GetAllItems.FirstOrDefault(x => x.Id == surveysResultId && String.Equals(x.MethodsType, Constraints.KMethodsTypeCuratorGroup));
                if (surveysResult == null)
                {
                    throw new SurveysResultDoesNotExistException();
                }

                Person person = surveysRepository.Context.Persons.FirstOrDefault(x => x.Id == personId && x.Curator.Id == curator.Id);
                if(person == null)
                {
                    throw new PersonDoesNotExistException();
                }

                if (surveysResult.Person.Id != curator.PersonId)
                {
                    throw new SurveysResultDoesNotExistException();
                }

                ICollection<SurveysResult> childSurveysResults =
                    surveysRepository.GetAllItems.Where(x => x.Parent.Id == surveysResult.Id && x.Person.Id == person.Id).ToList();
                // Fill CuratorSurveysWithChildContent content
                CuratorSurveysWithChildContent content = new CuratorSurveysWithChildContent();
                content.Id = surveysResult.Id;
                content.PersonId = surveysResult.Person.Id;
                content.MethodsType = surveysResult.MethodsType;
                content.MethodsId = surveysResult.MethodsId;
                content.Date = surveysResult.Date;
                content.SurveysResults = new List<SurveysResultWithConclusionContent>();
                foreach (var childSurveysResult in childSurveysResults)
                {
                    SurveysResultWithConclusionContent webSurveysResult = new SurveysResultWithConclusionContent()
                    {
                        Id = childSurveysResult.Id,
                        PersonId = childSurveysResult.Person.Id,
                        MethodsId = childSurveysResult.MethodsId,
                        MethodsType = childSurveysResult.MethodsType,
                        Name = childSurveysResult.Name,
                        IsCompleted = childSurveysResult.IsCompleted,
                        ParentId = childSurveysResult.Parent.Id,
                        Date = childSurveysResult.Date
                    };
                    List<Conclusion> conclusions =
                        surveysRepository.Context.Conclusions.Where(x => x.SurveysResult.Id == childSurveysResult.Id).
                            ToList();
                    webSurveysResult.Conclusions = new List<SurveysConclusionItem>();
                    foreach(var conclusion in conclusions)
                    {
                        SurveysConclusionItem item = new SurveysConclusionItem()
                                                         {
                                                             Id = conclusion.Id,
                                                             Data = conclusion.Data,
                                                             ServiceId = conclusion.Service.Id,
                                                             SurveysResultId = conclusion.SurveysResult.Id,
                                                             Ordered = conclusion.Ordered,
                                                             Paid = conclusion.Paid,
                                                             Processed = conclusion.Processed
                                                         };
                        webSurveysResult.Conclusions.Add(item);
                    }
                    content.SurveysResults.Add(webSurveysResult);
                }
                return content;
            }
        }