Пример #1
0
        public void Save(IndicatorDropdownValue model, 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;

                    if (model.Id > 0)
                        command = new OleDbCommand(@"UPDATE IndicatorDropdownValues SET DropdownValue=@DropdownValue, IndicatorId=@IndicatorId, UpdatedById=@UpdatedById, 
                            UpdatedAt=@UpdatedAt, EntityType=@EntityType WHERE ID = @id", connection);
                    else
                        command = new OleDbCommand(@"INSERT INTO IndicatorDropdownValues (DropdownValue, IndicatorId, UpdatedById, UpdatedAt,EntityType, CreatedById, CreatedAt) VALUES
                            (@DropdownValue, @IndicatorId, @UpdatedById, @UpdatedAt, @EntityType, @CreatedById, @CreatedAt)", connection);
                    command.Parameters.Add(new OleDbParameter("@DropdownValue", model.DisplayName));
                    command.Parameters.Add(OleDbUtil.CreateNullableParam("@IndicatorId", model.IndicatorId));
                    command.Parameters.Add(new OleDbParameter("@UpdatedById", userid));
                    command.Parameters.Add(OleDbUtil.CreateDateTimeOleDbParameter("@UpdatedAt", DateTime.Now));
                    command.Parameters.Add(new OleDbParameter("@EntityType", (int)model.EntityType));
                    if (model.Id > 0)
                        command.Parameters.Add(new OleDbParameter("@id", model.Id));
                    else
                    {
                        command.Parameters.Add(new OleDbParameter("@CreatedById", userid));
                        command.Parameters.Add(OleDbUtil.CreateDateTimeOleDbParameter("@CreatedAt", DateTime.Now));
                    }
                    command.ExecuteNonQuery();

                    if (model.Id <= 0)
                    {
                        command = new OleDbCommand(@"SELECT Max(ID) FROM IndicatorDropdownValues", connection);
                        model.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;
                }
            }
        }
Пример #2
0
        public void SaveEvalSubDistrict(IndicatorDropdownValue ez, 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;

                    if (ez.Id > 0)
                        command = new OleDbCommand(@"UPDATE EvalSubDistricts SET DisplayName=@DisplayName,
                           UpdatedById=@UpdatedById, UpdatedAt=@UpdatedAt WHERE ID=@id", connection);
                    else
                        command = new OleDbCommand(@"INSERT INTO EvalSubDistricts (DisplayName, UpdatedById, 
                            UpdatedAt, CreatedById, CreatedAt) values (@DisplayName, @UpdatedById, @UpdatedAt, @CreatedById,
                            @CreatedAt)", connection);

                    command.Parameters.Add(OleDbUtil.CreateNullableParam("@DisplayName", ez.DisplayName));
                    command.Parameters.Add(new OleDbParameter("@UpdatedById", userId));
                    command.Parameters.Add(OleDbUtil.CreateDateTimeOleDbParameter("@UpdatedAt", DateTime.Now));
                    if (ez.Id > 0)
                        command.Parameters.Add(new OleDbParameter("@id", ez.Id));
                    else
                    {
                        command.Parameters.Add(new OleDbParameter("@CreatedById", userId));
                        command.Parameters.Add(OleDbUtil.CreateDateTimeOleDbParameter("@CreatedAt", DateTime.Now));
                    }

                    command.ExecuteNonQuery();

                    if (ez.Id <= 0)
                    {
                        command = new OleDbCommand(@"SELECT Max(ID) FROM EvalSubDistricts", connection);
                        ez.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;
                }
            }
        }