protected void AddIndicators(int id, string name, IHaveDynamicIndicators dd, string formName, string formTranslationKey, ReportOptions options) { if (dd.Indicators.ContainsKey(name) && options.SelectedIndicators.Count(i => i.Name == name && i.FormNameKey == formTranslationKey) < 1) { options.SelectedIndicators.Add(ReportRepository.CreateReportIndicator(id, new KeyValuePair<string, Indicator>(name, dd.Indicators[name]), formName, formTranslationKey)); } }
private void GetIndicatorsForDisease(int diseaseId, IHaveDynamicIndicators entity) { OleDbConnection connection = new OleDbConnection(DatabaseData.Instance.AccessConnectionString); using (connection) { connection.Open(); entity.Indicators = new Dictionary<string, Indicator>(); List<string> indicatorIds = new List<string>(); try { OleDbCommand command = new OleDbCommand(@"Select DiseaseDistributionIndicators.ID, DataTypeId, DisplayName, IsRequired, IsDisabled, IsEditable, IsDisplayed, IsCalculated, IsMetaData, CanAddValues, UpdatedAt, UserName, DataType, NewYearType, RedistrictRuleId, AggTypeId, MergeRuleId, SortOrder FROM ((DiseaseDistributionIndicators INNER JOIN aspnet_users ON DiseaseDistributionIndicators.UpdatedById = aspnet_users.UserId) INNER JOIN IndicatorDataTypes ON DiseaseDistributionIndicators.DataTypeId = IndicatorDataTypes.ID) WHERE DiseaseId=@DiseaseId AND IsDisabled=0 ORDER BY IsEditable DESC, SortOrder, DiseaseDistributionIndicators.ID", connection); command.Parameters.Add(new OleDbParameter("@DiseaseId", diseaseId)); using (OleDbDataReader reader = command.ExecuteReader()) { while (reader.Read()) { entity.Indicators.Add(reader.GetValueOrDefault<string>("DisplayName"), new Indicator { Id = reader.GetValueOrDefault<int>("ID"), DataTypeId = reader.GetValueOrDefault<int>("DataTypeId"), RedistrictRuleId = reader.GetValueOrDefault<int>("RedistrictRuleId"), MergeRuleId = reader.GetValueOrDefault<int>("MergeRuleId"), AggRuleId = reader.GetValueOrDefault<int>("AggTypeId"), UpdatedBy = reader.GetValueOrDefault<DateTime>("UpdatedAt").ToShortDateString() + " by " + reader.GetValueOrDefault<string>("UserName"), DisplayName = reader.GetValueOrDefault<string>("DisplayName"), IsRequired = reader.GetValueOrDefault<bool>("IsRequired"), IsDisabled = reader.GetValueOrDefault<bool>("IsDisabled"), IsEditable = reader.GetValueOrDefault<bool>("IsEditable"), IsDisplayed = reader.GetValueOrDefault<bool>("IsDisplayed"), IsCalculated = reader.GetValueOrDefault<bool>("IsCalculated"), IsMetaData = reader.GetValueOrDefault<bool>("IsMetaData"), CanAddValues = reader.GetValueOrDefault<bool>("CanAddValues"), DataType = reader.GetValueOrDefault<string>("DataType"), NewYearTypeId = reader.GetValueOrDefault<int>("NewYearType"), SortOrder = reader.GetValueOrDefault<int>("SortOrder") }); indicatorIds.Add(reader.GetValueOrDefault<int>("ID").ToString()); } reader.Close(); } entity.IndicatorDropdownValues = GetIndicatorDropdownValues(connection, command, IndicatorEntityType.DiseaseDistribution, indicatorIds); } catch (Exception) { throw; } } }
public void SaveIndicators(IHaveDynamicIndicators model, int diseaseId, int userId) { bool transWasStarted = false; OleDbConnection connection = new OleDbConnection(DatabaseData.Instance.AccessConnectionString); using (connection) { connection.Open(); try { // START TRANS OleDbCommand command = new OleDbCommand("BEGIN TRANSACTION", connection); command.ExecuteNonQuery(); transWasStarted = true; foreach (var indicator in model.Indicators.Values.Where(i => i.Id > 0 && i.IsEdited)) { command = new OleDbCommand(@"UPDATE DiseaseDistributionIndicators SET DiseaseId=@DiseaseId, DataTypeId=@DataTypeId, DisplayName=@DisplayName, IsRequired=@IsRequired, IsDisabled=@IsDisabled, IsEditable=@IsEditable, IsDisplayed=@IsDisplayed, UpdatedById=@UpdateById, UpdatedAt=@UpdatedAt WHERE ID = @id", connection); command.Parameters.Add(new OleDbParameter("@DiseaseId", diseaseId)); command.Parameters.Add(new OleDbParameter("@DataTypeId", indicator.DataTypeId)); command.Parameters.Add(new OleDbParameter("@DisplayName", indicator.DisplayName)); command.Parameters.Add(new OleDbParameter("@IsRequired", indicator.IsRequired)); command.Parameters.Add(new OleDbParameter("@IsDisabled", indicator.IsDisabled)); command.Parameters.Add(new OleDbParameter("@IsEditable", true)); command.Parameters.Add(new OleDbParameter("@IsDisplayed", false)); command.Parameters.Add(new OleDbParameter("@UpdateById", userId)); command.Parameters.Add(OleDbUtil.CreateDateTimeOleDbParameter("@UpdatedAt", DateTime.Now)); command.Parameters.Add(new OleDbParameter("@id", indicator.Id)); command.ExecuteNonQuery(); } foreach (var indicator in model.Indicators.Values.Where(i => i.Id <= 0 && i.IsEdited)) { command = new OleDbCommand(@"INSERT INTO DiseaseDistributionIndicators (DiseaseId, DataTypeId, DisplayName, IsRequired, IsDisabled, IsEditable, IsDisplayed, UpdatedById, UpdatedAt) VALUES (@DiseaseId, @DataTypeId, @DisplayName, @IsRequired, @IsDisabled, @IsEditable, @IsDisplayed, @UpdatedById, @UpdatedAt)", connection); command.Parameters.Add(new OleDbParameter("@DiseaseId", diseaseId)); command.Parameters.Add(new OleDbParameter("@DataTypeId", indicator.DataTypeId)); command.Parameters.Add(new OleDbParameter("@DisplayName", indicator.DisplayName)); command.Parameters.Add(new OleDbParameter("@IsRequired", indicator.IsRequired)); command.Parameters.Add(new OleDbParameter("@IsDisabled", indicator.IsDisabled)); command.Parameters.Add(new OleDbParameter("@IsEditable", true)); command.Parameters.Add(new OleDbParameter("@IsDisplayed", false)); command.Parameters.Add(new OleDbParameter("@UpdateById", userId)); command.Parameters.Add(OleDbUtil.CreateDateTimeOleDbParameter("@UpdatedAt", DateTime.Now)); command.ExecuteNonQuery(); command = new OleDbCommand(@"SELECT Max(ID) FROM DiseaseDistributionIndicators", connection); indicator.Id = (int)command.ExecuteScalar(); } // COMMIT TRANS command = new OleDbCommand("COMMIT TRANSACTION", connection); command.ExecuteNonQuery(); transWasStarted = false; } catch (Exception) { if (transWasStarted) { try { OleDbCommand cmd = new OleDbCommand("ROLLBACK TRANSACTION", connection); cmd.ExecuteNonQuery(); } catch { } } throw; } } }