public DiseaseDistroCm CreateCm(DiseaseType disease)
 {
     DiseaseDistroCm dd = new DiseaseDistroCm();
     dd.Disease = GetDiseaseById((int)disease);
     GetIndicatorsForDisease(dd.Disease.Id, dd);
     return dd;
 }
 public DiseaseDistroCmVm(AdminLevel a, DiseaseDistroCm s, ICalcIndicators c)
 {
     r = new DiseaseRepository();
     this.model = s;
     adminLevel = a;
     calc = c;
 }
 public DiseaseDistroCmVm(AdminLevel a, int did, ICalcIndicators c)
 {
     adminLevel = a;
     r = new DiseaseRepository();
     model = r.CreateCm((DiseaseType)did);
     model.AdminLevelId = adminLevel.Id;
     calc = c;
 }
 protected override void ReloadDropdownValues()
 {
     if (cmType != null)
     {
         cmType = repo.CreateCm((DiseaseType)cmType.Disease.Id);
         DropDownValues = cmType.IndicatorDropdownValues;
     }
     else
     {
         type = repo.Create((DiseaseType)type.Disease.Id);
         DropDownValues = type.IndicatorDropdownValues;
     }
 }
 protected override void SetSpecificType(int id)
 {
     cmType = null;
     type = null;
     var d = repo.GetDiseaseById(id);
     if (d.DiseaseType == Translations.CM)
     {
         cmType = repo.CreateCm((DiseaseType)d.Id);
         Indicators = cmType.Indicators;
         DropDownValues = cmType.IndicatorDropdownValues;
     }
     else
     {
         type = repo.Create((DiseaseType)d.Id);
         Indicators = type.Indicators;
         DropDownValues = type.IndicatorDropdownValues;
     }
     Calculator = new CalcDistro();
     Validator = new DiseaseDistroCustomValidator();
 }
        public void SaveCm(DiseaseDistroCm distro, int userId, OleDbConnection connection, OleDbCommand command)
        {
            distro.MapIndicatorsToProperties();
            distro.MapPropertiesToIndicators();
            if (distro.Id > 0)
                command = new OleDbCommand(@"UPDATE DiseaseDistributions SET DiseaseId=@DiseaseId, AdminLevelId=@AdminLevelId,
                            Notes=@Notes, DateReported=@DateReported, UpdatedById=@UpdatedById, UpdatedAt=@UpdatedAt WHERE ID=@id", connection);
            else
                command = new OleDbCommand(@"INSERT INTO DiseaseDistributions (DiseaseId, AdminLevelId,  Notes, DateReported, UpdatedById, 
                            UpdatedAt, CreatedById, CreatedAt) values (@DiseaseId, @AdminLevelId, @Notes, @DateReported, @UpdatedById, 
                            @UpdatedAt, @CreatedById, @CreatedAt)", connection);
            command.Parameters.Add(new OleDbParameter("@DiseaseId", distro.Disease.Id));
            command.Parameters.Add(OleDbUtil.CreateNullableParam("@AdminLevelId", distro.AdminLevelId));
            command.Parameters.Add(OleDbUtil.CreateNullableParam("@Notes", distro.Notes));
            command.Parameters.Add(OleDbUtil.CreateDateTimeOleDbParameter("@DateReported", distro.DateReported.Value));
            command.Parameters.Add(new OleDbParameter("@UpdatedById", userId));
            command.Parameters.Add(OleDbUtil.CreateDateTimeOleDbParameter("@UpdatedAt", DateTime.Now));
            if (distro.Id > 0)
                command.Parameters.Add(new OleDbParameter("@id", distro.Id));
            else
            {
                command.Parameters.Add(new OleDbParameter("@CreatedById", userId));
                command.Parameters.Add(OleDbUtil.CreateDateTimeOleDbParameter("@CreatedAt", DateTime.Now));
            }
            command.ExecuteNonQuery();

            if (distro.Id <= 0)
            {
                command = new OleDbCommand(@"SELECT Max(ID) FROM DiseaseDistributions", connection);
                distro.Id = (int)command.ExecuteScalar();
            }

            AddIndicatorValues(connection, distro, distro.Id, userId);
        }
        public void Save(DiseaseDistroCm distro, 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;

                    SaveCm(distro, userId, connection, command);

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