- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
public List<MainTZInfoVO> GetMyJobs(bool flag1, bool flag2, bool flag3, bool flag4, string date1, string date2)
{
    List<MainTZInfoVO> ulist = new List<MainTZInfoVO>();  // список заданий пользователя
    string sIdUser = usr.GetUserOrAssistansID().ToString();   // ID пользователя
    
    //выданы мне задания
    string sql1 = "select ID_TZ as ID, DATE_VYD, DESCR, SODER, STATUS||' '||CASE WHEN NVL(LAST_TZ,'0')=1 THEN chr(10)||' !Последнее' END as STATUS, '1' as NOT_RECEIVED from tz_all_jobs where (trim(id_ispol) like '%,'||'" + sIdUser + "'||',%' or trim(id_ispol) like '" + sIdUser + "'||',%') and (status='Выдано' or status = 'Отклонено частично') and nvl(id_prin,' ') not like  '%,'||'" + sIdUser + "'||',%' and  nvl(id_prin,' ') not like '" + sIdUser + "'||',%' and nvl(id_otkl,' ') not like  '%,'||'" + sIdUser + "'||',%' and  nvl(id_otkl,' ') not like '" + sIdUser + "'||',%'";
    //принятые мной, не рассмотренные другими
    string sql2 = "select ID_TZ as ID, DATE_VYD, DESCR, SODER, STATUS||' '||CASE WHEN NVL(LAST_TZ,'0')=1 THEN chr(10)||' !Последнее' END as STATUS, '0' as NOT_RECEIVED from tz_all_jobs where (status='Выдано' or status = 'Отклонено частично') and (nvl(id_prin,' ')  like  '%,'||'" + sIdUser + "'||',%' or  nvl(id_prin,' ')  like '" + sIdUser + "'||',%' or nvl(id_otkl,' ')  like  '%,'||'" + sIdUser + "'||',%' or  nvl(id_otkl,' ')  like '" + sIdUser + "'||',%')";
    //выданные мне в статусе отклонено
    string sql3 = "select ID_TZ as ID, DATE_VYD, DESCR, SODER, STATUS||' '||CASE WHEN NVL(LAST_TZ,'0')=1 THEN chr(10)||' !Последнее' END as STATUS, '2' as NOT_RECEIVED from tz_all_jobs where  (id_ispol like '%,'||'" + sIdUser + "'||',%' or id_ispol like '" + sIdUser + "'||',%') and (status='Отклонено' or status='Аннулировано')";
    //ограничение по дате
    string sql4 = "date_vyd between to_date('" + date1 + "','DD.MM.YYYY') and to_date('" + date2 + "','DD.MM.YYYY')";
    string sql = " ";
    //формируем sql-ку по флажкам, которые передаем в функцию
    if (flag1 == true)
    {
        sql = sql1;
    }
    if (flag2 == true)
    {
        if (sql.Length > 1)
        {
            sql = sql + " union " + sql2;
        }
        else
        {
            sql = sql2;
        }
    }
    if (flag3 == true)
    {
        if (sql.Length > 1)
        {
            sql = sql + " union " + sql3;
        }
        else
        {
            sql = sql3;
        }
    }
    if ((flag4 == true) & (sql.Length > 1))
    {
        sql = "select * from (" + sql + ") tabl where " + sql4;
    }
    sql = sql + " order by date_vyd desc";
    OracleCommand cmd = new OracleCommand(sql, connection);
    OracleDataReader reader = cmd.ExecuteReader();
    //ТУТ ПЕРЕДЕЛАТЬ ВСЕ
    /*заполнение полей из ридера*/
    while (reader.Read())
    {
        //...
    }
    return ulist; 
}
                                     
        
            в этом коде прекрасно все (имена и типы переменных, жестокое обращение с датами, чуть менее жестокое обращения с "флажками", соединение с Ораклом, которое открывается где-то за пределами вселенной и не закрывается нигде, и еще много всего)...
дочитав этот шедевр до строчки //ТУТ ПЕРЕДЕЛАТЬ ВСЕ, просто невозможно не прослезиться...