public IEnumerable <long> Enroll(string unit, long telegramId, IEnumerable <EnrollmentModel> entries) { List <long> newIds = new List <long>(); using (var con = _connectionFactory.CreateConnection()) { con.Open(); var transaction = con.BeginTransaction(); try { foreach (var entry in entries) { long id = con.Insert <EnrollmentModel>(entry); newIds.Add(id); int priority = 1; foreach (var vaxPref in entry.VaccinesPreference) { VaccinePreferenceModel vaxPrefModel = new VaccinePreferenceModel(); vaxPrefModel.EnrollmentId = id; vaxPrefModel.VaxId = vaxPref; vaxPrefModel.Priority = priority++; con.Insert(vaxPrefModel); } } transaction.Commit(); } catch { transaction.Rollback(); throw; } } return(newIds); }
internal bool UpdateEnrollment(string unit, long telegramId, EnrollmentModel model) { using (var con = _connectionFactory.CreateConnection()) { con.Open(); var transaction = con.BeginTransaction(); try { bool result = con.Update(model, transaction); con.Query("DELETE FROM Vax_Pref WHERE EnrollmentId=@enrollmentId", new { enrollmentId = model.Id }, transaction); int priority = 1; foreach (var vaxPref in model.VaccinesPreference) { VaccinePreferenceModel vaxPrefModel = new VaccinePreferenceModel(); vaxPrefModel.EnrollmentId = model.Id; vaxPrefModel.VaxId = vaxPref; vaxPrefModel.Priority = priority++; con.Insert(vaxPrefModel, transaction); } transaction.Commit(); return(result); } catch { transaction.Rollback(); throw; } } }