private void SyncExam(ExamSheet mysheet) { //var mysheet = repoOnSite.GetSheetBySheetId(sheetid); var myregis = repoOnSite.GetTestRegisById(mysheet.TestRegisID); if (mysheet.LatestStatus == "PASS") { mysheet.IsSync = true; myregis.IsSync = true; } List <ExamSheet> sheetList = new List <ExamSheet>(); sheetList.Add(mysheet); List <ExamSheetOnline> sheetForOnline = new List <ExamSheetOnline>(); var listReg = repoOnSite.GetTestRegisByIds(sheetList.Select(x => x.TestRegisID).ToList()); foreach (var item in sheetList) { var regis = listReg.Where(x => x._id == item.TestRegisID).FirstOrDefault(); var regisOnline = new TestRegistrationOnline { _id = regis._id, Title = regis.Title, FirstName = regis.FirstName, LastName = regis.LastName, SubjectCode = regis.SubjectCode, SubjectName = regis.SubjectName, ExamLanguage = regis.ExamLanguage, VoiceLanguage = regis.VoiceLanguage, RegDate = regis.RegDate, RegDateString = regis.RegDateString, ExpriedDate = regis.ExpriedDate, SiteId = regis.SiteId, CenterId = regis.CenterId, ForTestSystem = regis.ForTestSystem, ForPractice = regis.ForPractice, Status = regis.Status, ExamStatus = regis.ExamStatus, PID = regis.PID, ExamNumber = regis.ExamNumber, ExamPeriod = regis.ExamPeriod, AppointDate = regis.AppointDate, Email = regis.Email, Mobile = regis.Mobile, Address = regis.Address, MaxCount = regis.MaxCount, CertData = regis.CertData, LatestCount = regis.LatestCount, }; var sheet = new ExamSheetOnline { _id = item._id, Subject = item.Subject, TestReg = regisOnline, TestCount = item.TestCount, LatestStatus = item.LatestStatus, ExamDateTime = item.ExamDateTime, StatusExtensions = item.StatusExtensions, RandomQuestion = item.RandomQuestions, CenterId = item.CenterId, CorrectScore = item.CorrectScore, InCorrectScore = item.InCorrectScore, ReviewDuration = item.ReviewDuration, CreateDate = item.CreateDate, ClientId = item.ClientId }; sheetForOnline.Add(sheet); } CloseExamRequest request = new CloseExamRequest() { ResultSheet = sheetForOnline, }; using (var client = new WebClient()) { try { var json = Newtonsoft.Json.JsonConvert.SerializeObject(request); var dataByte = System.Text.Encoding.UTF8.GetBytes(json); client.Headers[HttpRequestHeader.ContentType] = "application/json"; //dataByte = client.UploadData("http://localhost:10585/api/ExamSheet/UpdateExamSheetFromOnSite/", "POST", dataByte); dataByte = client.UploadData("http://eexamthaiex.azurewebsites.net/api/ExamSheet/UpdateExamSheetFromOnSite/", "POST", dataByte); //update sheet repoOnSite.UpdateSheet(mysheet); //update Regis repoOnSite.UpdateTestRegis(myregis); } catch (Exception e) { throw new Exception(e.ToString()); } } }
public DisplayAllVM ListTestRegistration(string centerid) { var fromtestRegis = repoOnSite.ListTestRegis(centerid); if (fromtestRegis.Count() > 0) { var mappedsheet = repoOnSite.GetMappedSheet(centerid); var fromtestRegisExistMappedsheet = fromtestRegis.Where(p2 => mappedsheet.All(p1 => p1.TestRegisID != p2._id)); var _listTestRegisBySheet = repoOnSite.GetTestRegisByIds(mappedsheet.Select(x => x.TestRegisID).ToList()); List <TestRegistrationRespone> formsheet = new List <TestRegistrationRespone>(); foreach (var item in mappedsheet) { var regis = _listTestRegisBySheet.Where(x => x._id == item.TestRegisID).FirstOrDefault(); if (regis != null) { var sheetRegis = new TestRegistrationRespone() { _id = regis._id, Title = regis.Title, FirstName = regis.FirstName, LastName = regis.LastName, SubjectCode = regis.SubjectCode, SubjectName = regis.SubjectName, ExamLanguage = regis.ExamLanguage, VoiceLanguage = regis.VoiceLanguage, RegDate = regis.RegDate, RegDateString = regis.RegDateString, ExpriedDate = regis.ExpriedDate, SiteId = regis.SiteId, CenterId = regis.CenterId, ForPractice = regis.ForPractice, ForTestSystem = regis.ForTestSystem, Status = item.LatestStatus, PID = regis.PID, ExamNumber = regis.ExamNumber, ExamPeriod = regis.ExamPeriod, AppointDate = regis.AppointDate, Address = regis.Address, MaxCount = regis.MaxCount, LatestCount = item.TestCount, CertData = new CertData { CertNo = regis.CertData.CertNo, CertYear = regis.CertData.CertYear, UserCode = regis.CertData.UserCode }, IsSync = item.IsSync, SheetId = item._id, CorrectCount = item.CorrectScore, QuestionCount = item.RandomQuestions.Count(), }; formsheet.Add(sheetRegis); } } var result = new DisplayAllVM { TestRegistrations = fromtestRegisExistMappedsheet.Select(x => new TestRegistrationRespone { _id = x._id, Title = x.Title, FirstName = x.FirstName, LastName = x.LastName, SubjectCode = x.SubjectCode, SubjectName = x.SubjectName, ExamLanguage = x.ExamLanguage, VoiceLanguage = x.VoiceLanguage, RegDate = x.RegDate, RegDateString = x.RegDateString, ExpriedDate = x.ExpriedDate, SiteId = x.SiteId, CenterId = x.CenterId, ForPractice = x.ForPractice, ForTestSystem = x.ForTestSystem, Status = x.Status, PID = x.PID, ExamNumber = x.ExamNumber, ExamPeriod = x.ExamPeriod, AppointDate = x.AppointDate, Address = x.Address, MaxCount = x.MaxCount, CertData = new CertData { CertNo = x.CertData.CertNo, CertYear = x.CertData.CertYear, UserCode = x.CertData.UserCode }, LatestCount = x.LatestCount <= 1 ? 1 : x.LatestCount, IsSync = x.IsSync, SheetId = string.Empty, CorrectCount = 0, QuestionCount = 0, }).ToList(), }; result.TestRegistrations.AddRange(formsheet); return(result); } else { return(new DisplayAllVM { TestRegistrations = new List <ViewModels.TestRegistrationRespone>() }); } }