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); }
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 }); } }
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); } }
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); }