diff --git a/Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs b/Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs index 71f425ff..1377a3fd 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs @@ -1148,7 +1148,7 @@ public class Ghre_StudyRecordServices : BaseServices> QueryESSData(long id, long? openClassId = null) { + long? feedbackId = null; + if (await Db.Queryable().Where(x => x.Source == "ParentTeacher" && (x.Id == id || x.Id == openClassId)).AnyAsync()) + { + var feedback = await Db.Queryable().Where(x => x.Source == "ParentTeacher" && (x.Id == id || x.Id == openClassId)).FirstAsync(); + feedbackId = feedback.Id; + openClassId = feedback.OpenClassId; + id = feedback.SurveyId.Value; + } + else + { + if (!await Db.Queryable() + .Where(x => x.Source == "Trainee" + && (x.SurveyId == id || x.Id == openClassId) + && x.OpenClassId == openClassId).AnyAsync()) + { + + var openClass = await Db.Queryable().Where(x => x.Id == openClassId).FirstAsync(); + var feedback = new Ghre_OpenClassFeedback() + { + OpenClassId = openClassId, + SurveyId = id, + StaffId = App.User.StaffId, + Source = "Trainee", + EffectiveTime = DateTime.Now, + ExpiryTime = DateTime.MaxValue, + TeacherId = openClass.TeacherId, + CourseBeginTime = openClass.StartTime, + CourseEndTime = openClass.EndTime, + CourseId = openClass.LinkId + }; + feedbackId = await Db.Insertable(feedback).ExecuteReturnSnowflakeIdAsync(); + } + else feedbackId = await Db.Queryable() + .Where(x => x.Source == "Trainee" + && (x.SurveyId == id || x.Id == openClassId) + && x.OpenClassId == openClassId).Select(x => x.Id).FirstAsync(); + } + var entity = await base.QueryById(id); @@ -223,6 +261,7 @@ public class Ghre_SurveyServices : BaseServices() .Where(x => x.StaffId == App.User.StaffId && x.SurveyId == id) .WhereIF(openClassId != null, x => x.OpenClassId == openClassId) + .WhereIF(openClassId != null && feedbackId != null, x => x.OpenClassId == openClassId && x.OpenClassFeedbackId == feedbackId) .AnyAsync(); #endregion @@ -232,6 +271,7 @@ public class Ghre_SurveyServices : BaseServices() .Where(x => x.StaffId == App.User.StaffId && x.SurveyId == id) .WhereIF(openClassId != null, x => x.OpenClassId == openClassId) + .WhereIF(openClassId != null && feedbackId != null, x => x.OpenClassId == openClassId && x.OpenClassFeedbackId == feedbackId) .Select(x => x.Id).FirstAsync(); var recordDetails = await Db.Queryable().Where(x => x.SurveyRecordId == recordId).ToListAsync(); @@ -282,12 +322,27 @@ public class Ghre_SurveyServices : BaseServices SubmitESSData(long id, Ghre_SurveyExtend input, long? openClassId = null) { + long? feedbackId = null; + if (await Db.Queryable().Where(x => x.Source == "ParentTeacher" && (x.Id == id || x.Id == openClassId)).AnyAsync()) + { + var feedback = await Db.Queryable().Where(x => x.Source == "ParentTeacher" && (x.Id == id || x.Id == openClassId)).FirstAsync(); + feedbackId = feedback.Id; + openClassId = feedback.OpenClassId; + id = feedback.SurveyId.Value; + } + else + feedbackId = await Db.Queryable() + .Where(x => x.Source == "Trainee" + && (x.SurveyId == id || x.Id == openClassId) + && x.OpenClassId == openClassId).Select(x => x.Id).FirstAsync(); + var entity = await base.QueryById(id); var lastRecord = await Db.Queryable() .Where(x => x.StaffId == App.User.StaffId && x.SurveyId == id) .WhereIF(openClassId != null, x => x.OpenClassId == openClassId) + .WhereIF(openClassId != null && feedbackId != null, x => x.OpenClassFeedbackId == feedbackId) .FirstAsync(); var surveyRecordId = lastRecord?.Id; await Db.Updateable() @@ -310,26 +365,7 @@ public class Ghre_SurveyServices : BaseServices().Where(x => x.Id == openClassId).FirstAsync(); - var feedback = new Ghre_OpenClassFeedback() - { - OpenClassId = openClassId, - SurveyId = id, - StaffId = App.User.StaffId, - Source = "Trainee", - EffectiveTime = DateTime.Now, - ExpiryTime = DateTime.MaxValue, - TeacherId = openClass.TeacherId, - CourseBeginTime = openClass.StartTime, - CourseEndTime = openClass.EndTime, - CourseId = openClass.LinkId - }; - feedbackId = await Db.Insertable(feedback).ExecuteReturnSnowflakeIdAsync(); - } var record = new Ghre_SurveyRecord() { //Id = recordId,