示例#1
0
        public OperationResult <IDataDTO> CreateVote(IVoteDTO voteDTO)
        {
            OperationResult <IDataDTO> retVal = null;

            try
            {
                IAnswerDAC answerDAC = (IAnswerDAC)DACFactory.Instance.Create(DACType.AnswerDAC);
                IDataDTO   resultDTO = answerDAC.CreateVote(voteDTO);
                if (resultDTO != null)
                {
                    retVal = OperationResult <IDataDTO> .CreateSuccessResult(resultDTO);
                }
                else
                {
                    retVal = OperationResult <IDataDTO> .CreateFailureResult("Failed to edit!");
                }
            }
            catch (DACException dacEx)
            {
                retVal = OperationResult <IDataDTO> .CreateErrorResult(dacEx.Message, dacEx.StackTrace);
            }
            catch (Exception ex)
            {
                ExceptionManager.HandleException(ex);
                retVal = OperationResult <IDataDTO> .CreateErrorResult(ex.Message, ex.StackTrace);
            }

            return(retVal);
        }
示例#2
0
        public IDataDTO CreateVote(IVoteDTO voteDTO)
        {
            using (var context = new BufferOverflowDBEntities())
            {
                var voteEntity = context.Votes.SingleOrDefault(v => v.UserId == voteDTO.UserId && v.AnswerId == voteDTO.AnswerId);
                //context.Votes.Where(v => v.Id == voteDTO.Id).Distinct();
                if (voteEntity == null)
                {
                    Votes vote = new Votes();
                    EntityConverter.FillEntityFromDTO(voteDTO, vote);
                    context.Votes.Add(vote);
                    context.SaveChanges();
                }
                else if (voteEntity.Vote != voteDTO.Vote)
                {
                    voteEntity.Vote = voteDTO.Vote;
                    context.SaveChanges();
                }

                var countUp   = context.Votes.Where(c => c.Vote == 1 && c.AnswerId == voteDTO.AnswerId).Count();
                var countDown = context.Votes.Where(c => c.Vote == 2 && c.AnswerId == voteDTO.AnswerId).Count();

                int totalVotes = countUp - countDown;

                IDataDTO dataDTO = (IDataDTO)DTOFactory.Instance.Create(DTOType.DataDTO);
                dataDTO.TotalVote  = totalVotes;
                dataDTO.VoteDetail = voteDTO;

                return(dataDTO);
            }
        }
示例#3
0
        public OperationResult <IDataDTO> Details(IQuestionDTO questionDTO)
        {
            OperationResult <IDataDTO> retVal = null;

            try
            {
                IQuestionDAC questionDAC = (IQuestionDAC)DACFactory.Instance.Create(DACType.QuestionDAC);
                IDataDTO     resultDTO   = questionDAC.Details(questionDTO);
                if (resultDTO != null)
                {
                    retVal = OperationResult <IDataDTO> .CreateSuccessResult(resultDTO);
                }
                else
                {
                    retVal = OperationResult <IDataDTO> .CreateFailureResult("Failed to get details!");
                }
            }
            catch (DACException dacEx)
            {
                retVal = OperationResult <IDataDTO> .CreateErrorResult(dacEx.Message, dacEx.StackTrace);
            }
            catch (Exception ex)
            {
                ExceptionManager.HandleException(ex);
                retVal = OperationResult <IDataDTO> .CreateErrorResult(ex.Message, ex.StackTrace);
            }

            return(retVal);
        }
示例#4
0
        public List <IDataDTO> GetAnswers(IAnswerDTO answerDTO)
        {
            using (var context = new BufferOverflowDBEntities())
            {
                List <IDataDTO> listOfAnswers    = null;
                var             answerEntityList = context.Answers.Where(a => a.QuestionId == answerDTO.QuestionId).ToList();

                if (answerEntityList != null)
                {
                    listOfAnswers = new List <IDataDTO>();
                    foreach (var answerEntity in answerEntityList)
                    {
                        IAnswerDTO ansDTO = (IAnswerDTO)DTOFactory.Instance.Create(DTOType.AnswerDTO);
                        EntityConverter.FillDTOFromEntity(answerEntity, ansDTO);

                        // Getting user
                        var      userEntity = context.User.SingleOrDefault(u => u.Id == answerEntity.UserId);
                        IUserDTO userDTO    = (IUserDTO)DTOFactory.Instance.Create(DTOType.UserDTO);
                        EntityConverter.FillDTOFromEntity(userEntity, userDTO);
                        userDTO.Password = "";

                        // Getting  votes
                        var      voteEntity = context.Votes.SingleOrDefault(v => v.UserId == userEntity.Id && v.AnswerId == answerEntity.Id);
                        IVoteDTO voteDTO    = (IVoteDTO)DTOFactory.Instance.Create(DTOType.VoteDTO);
                        if (voteEntity != null)
                        {
                            EntityConverter.FillDTOFromEntity(voteEntity, voteDTO);
                        }
                        else
                        {
                            voteDTO.Vote = 0;
                        }

                        var countUp   = context.Votes.Where(c => c.Vote == 1 && c.AnswerId == voteDTO.AnswerId).Count();
                        var countDown = context.Votes.Where(c => c.Vote == 2 && c.AnswerId == voteDTO.AnswerId).Count();

                        int totalVotes = countUp - countDown;

                        IDataDTO dataDTO = (IDataDTO)DTOFactory.Instance.Create(DTOType.DataDTO);
                        dataDTO.AnswerDetail = ansDTO;
                        dataDTO.UserDetail   = userDTO;
                        dataDTO.VoteDetail   = voteDTO;
                        dataDTO.TotalVote    = totalVotes;
                        listOfAnswers.Add(dataDTO);
                    }
                }
                Console.WriteLine("Hello hi " + listOfAnswers[0].TotalVote);
                return(listOfAnswers);
            }
        }
示例#5
0
        /// <summary>
        /// Method to get all questions
        /// </summary>
        /// <returns></returns>
        public List <IDataDTO> GetQuestions()
        {
            using (var context = new BufferOverflowDBEntities())
            {
                List <IDataDTO> listOfQuestions    = null;
                var             questionEntityList = context.Questions.OrderByDescending(e => e.Created).ToList();

                if (questionEntityList != null)
                {
                    listOfQuestions = new List <IDataDTO>();
                    foreach (var questionEntity in questionEntityList)
                    {
                        IQuestionDTO questionDTO = (IQuestionDTO)DTOFactory.Instance.Create(DTOType.QuestionDTO);
                        EntityConverter.FillDTOFromEntity(questionEntity, questionDTO);

                        // Getting Question tags
                        var tagsEntityList = context.TagRelation.Where(t => t.QuestionId == questionEntity.Id).ToList();


                        List <ITagsDTO> tagName = new List <ITagsDTO>();
                        foreach (var tags in tagsEntityList)
                        {
                            ITagsDTO tagDTO = (ITagsDTO)DTOFactory.Instance.Create(DTOType.TagsDTO);
                            var      tag    = context.Tags.SingleOrDefault(t => t.Id == tags.TagId);
                            EntityConverter.FillDTOFromEntity(tag, tagDTO);
                            tagName.Add(tagDTO);
                        }

                        // Getting User
                        IUserDTO userDTO    = (IUserDTO)DTOFactory.Instance.Create(DTOType.UserDTO);
                        var      userEntity = context.User.SingleOrDefault(u => u.Id == questionEntity.UserId);
                        EntityConverter.FillDTOFromEntity(userEntity, userDTO);

                        IDataDTO dataDTO = (IDataDTO)DTOFactory.Instance.Create(DTOType.DataDTO);
                        dataDTO.QuestionDetail = questionDTO;
                        dataDTO.TagDetail      = tagName;
                        dataDTO.UserDetail     = userDTO;

                        listOfQuestions.Add(dataDTO);
                    }
                }

                return(listOfQuestions);
            }
        }
示例#6
0
        /// <inheritdoc/>
        public async Task <(ReportDTO report, bool success)> ProcessData(IDataDTO dataDTO)
        {
            if (dataDTO == null)
            {
                return(null, false);
            }

            ReportDTO healthReport;

            try
            {
                healthReport = await GetHealthReport(dataDTO);

                await _registerReportCommandProducer.Send(healthReport);
            }
            catch
            {
                return(null, false);
            }
            return(healthReport, true);
        }
示例#7
0
        // Randomly generate health status of the patient.
        private Task <ReportDTO> GetHealthReport(IDataDTO dataDTO)
        {
            var generator = new Random();

            var arrayOfHealthStatuses = Enum.GetValues(typeof(HealthStatus));
            var healthStatus          = (HealthStatus)arrayOfHealthStatuses.GetValue(generator.Next(0, arrayOfHealthStatuses.Length));

            var accuracy = generator.Next(50, 101);

            string diseases = null;

            if (healthStatus == HealthStatus.Diseased)
            {
                switch (dataDTO.SensorDeviceType)
                {
                case "Temperature":
                    diseases = RecognizeDiseasesByTemperature();
                    break;

                case "Acoustic":
                    diseases = RecognizeDiseasesByAcoustic();
                    break;

                default:
                    break;
                }
            }

            var healthReport = _mapper.Map <IDataDTO, ReportDTO>(dataDTO);

            healthReport.HealthStatus      = healthStatus.ToString();
            healthReport.HealthDescription = DataProcessorDictionary.GetHealthDescription(healthStatus);
            healthReport.Diseases          = diseases;
            healthReport.Accuracy          = accuracy;

            // Imitation of processing time (10 sec).
            Thread.Sleep(10000);

            return(Task.FromResult(healthReport));
        }
示例#8
0
        /// <summary>
        /// Method to get question detail
        /// </summary>
        /// <param name="questionDTO"></param>
        /// <returns></returns>
        public IDataDTO Details(IQuestionDTO questionDTO)
        {
            using (var context = new BufferOverflowDBEntities())
            {
                IDataDTO dataDTO        = (IDataDTO)DTOFactory.Instance.Create(DTOType.DataDTO);
                var      questionDetail = context.Questions.SingleOrDefault(q => q.Id == questionDTO.Id);

                if (questionDetail != null)
                {
                    dataDTO.QuestionDetail = (IQuestionDTO)DTOFactory.Instance.Create(DTOType.QuestionDTO);
                    EntityConverter.FillDTOFromEntity(questionDetail, dataDTO.QuestionDetail);

                    // Geting Question tags
                    var             tagRelationEntity = context.TagRelation.Where(t => t.QuestionId == questionDetail.Id).ToList();
                    List <ITagsDTO> tags = new List <ITagsDTO>();
                    foreach (var tag in tagRelationEntity)
                    {
                        var      tagEntity = context.Tags.SingleOrDefault(t => t.Id == tag.TagId);
                        ITagsDTO tagsDTO   = (ITagsDTO)DTOFactory.Instance.Create(DTOType.TagsDTO);
                        EntityConverter.FillDTOFromEntity(tagEntity, tagsDTO);
                        tags.Add(tagsDTO);
                    }
                    dataDTO.TagDetail = tags;

                    // Getting User Detail
                    var userEntity = context.User.SingleOrDefault(u => u.Id == questionDetail.UserId);
                    dataDTO.UserDetail = (IUserDTO)DTOFactory.Instance.Create(DTOType.UserDTO);
                    EntityConverter.FillDTOFromEntity(userEntity, dataDTO.UserDetail);
                }
                else
                {
                    dataDTO.QuestionDetail.Id = 0;
                }

                return((dataDTO.QuestionDetail.Id != 0) ? dataDTO : null);
            }
        }