示例#1
0
        public override SurveyResultData ReadDailyArchive(IEnumerable <DateTime> dates)
        {
            if (dates == null)
            {
                return new SurveyResultData {
                           State = SurveyResultState.InvalidIncomingParameters
                }
            }
            ;

            var datesList = dates.ToList();

            if (!datesList.Any())
            {
                return(new SurveyResultData {
                    State = SurveyResultState.Success
                });
            }
            var minDate             = datesList.Min();
            SurveyResultData result = null;

            try
            {
                result = Survey(ArchiveType.Daily, minDate);
            }
            catch (Exception ex)
            {
                OnSendMessage(string.Format("ошибка в драйвере: {0}", ex));
            }
            return(result);
        }
示例#2
0
 public ResponseEntity <Default> Submit([FromBody] SurveyResultData surveyResults)
 {
     (int?Data, HttpStatusCode Status)submitResult = surveyModel.SubmitSurvey(surveyResults);
     if (submitResult.Data == null)
     {
         return(new ResponseEntity <Default>()
         {
             Data = null,
             Message = "서버 오류",
             Status = submitResult.Status
         });
     }
     else
     {
         return(new ResponseEntity <Default>()
         {
             Data = null,
             Message = "성공적으로 제출되었습니다.",
             Status = submitResult.Status
         });
     }
 }
示例#3
0
        internal (int?, HttpStatusCode) SubmitSurvey(SurveyResultData surveyResult)
        {
            try
            {
                string            sql   = "";
                int               count = 0;
                DynamicParameters param = new DynamicParameters();

                using (var db = new MySqlHelper())
                {
                    foreach (var result in surveyResult.SurveyResults)
                    {
                        sql = "insert into survey_result (surveyIdx, questionIdx, answerUserIdx, answerText, answerNumber, questionType) " +
                              "value (@surveyIdx, @questionIdx, @answerUserIdx, @answerText, @answerNumber, @questionType)";
                        param.Add("@surveyIdx", surveyResult.SurveyIdx);
                        param.Add("@questionIdx", result.QuestionIdx);
                        param.Add("@answerUserIdx", result.AnswerUserIdx);
                        param.Add("@answerText", result.AnswerText);
                        param.Add("@answerNumber", result.AnswerNumber);
                        param.Add("@questionType", (int)result.QuestionType);
                        count += db.Execute(sql, param);
                        param  = new DynamicParameters();
                    }
                    if (count == surveyResult.SurveyResults.Count)
                    {
                        return(count, HttpStatusCode.OK);
                    }
                    else
                    {
                        return(count, HttpStatusCode.InternalServerError);
                    }
                }
            }
            catch
            {
                return(null, HttpStatusCode.InternalServerError);
            }
        }
示例#4
0
        private SurveyResultData Survey(ArchiveType archiveType, DateTime dateEnd)
        {
            var result = new SurveyResultData {
                State = SurveyResultState.Success
            };

            byte[] fcv  = { 0x7B, 0x5B };
            int    ifcv = 0;

            var currentDateTime = DateTime.MaxValue;
            int errorTryCounter = 0;

            var records = new List <Data>();

            //инициируем связь со счетчиком
            var slaveInitialziation = SlaveInitialization().ToSurveyResultState();

            if (slaveInitialziation != SurveyResultState.Success)
            {
                result.State = slaveInitialziation;
                return(result);
            }

            //инициируем чтение архива
            var archiveReadInitialization = InitialReadArchive(archiveType).ToSurveyResultState();

            if (archiveReadInitialization != SurveyResultState.Success)
            {
                result.State = archiveReadInitialization;
                return(result);
            }
            DateTime lastDate = DateTime.MaxValue;

            do
            {
                byte[] buf = null;
                for (int i = 0; i < 5; i++)
                {
                    buf = GetNextRecord(fcv[ifcv]);
                    if (buf != null)
                    {
                        break;
                    }
                }

                var parsedData = DriverHelper.ParseData(buf);

                if (parsedData == null)
                {
                    ShowMessage("Данные не получены");
                    result.State = SurveyResultState.PartialyRead;
                    errorTryCounter++;
                }
                else
                {
                    if (parsedData.Item1 > lastDate)
                    {
                        break;
                    }

                    lastDate = parsedData.Item1;
                }


                if (buf == null || parsedData == null)
                {
                    ShowMessage("Данные не получены");
                    result.State = SurveyResultState.PartialyRead;
                    errorTryCounter++;
                }
                else if (parsedData.Item1 == default(DateTime))
                {
                    ShowMessage("Окончание чтения архива");
                    break;
                }
                else
                {
                    errorTryCounter = 0;
                    currentDateTime = parsedData.Item1;
                    if (parsedData.Item2 != null)
                    {
                        records.AddRange(parsedData.Item2.OrderByDescending(r => r.Value));
                    }
                    ShowMessage(string.Format("Данные за {0} получены", currentDateTime.ToString(GetDataFormatString(archiveType))));
                }
                ifcv = 1 - ifcv;
            } while (currentDateTime > dateEnd && errorTryCounter < 5);

            result.Records = records;
            return(result);
        }