| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.ComponentModel;
 
- using System.Data;
 
- using System.Drawing;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Windows.Forms;
 
- using System.Data.SqlClient;
 
- namespace Prakt2
 
- {
 
-     public partial class Form1 : Form
 
-     {
 
-         public Form1()
 
-         {
 
-             InitializeComponent();
 
-         }
 
-         string TxtCon = Properties.Settings.Default.agentRUDConnectionString;
 
-         struct Agent
 
-         {
 
-             public string Title, Type, Phone, Logo, Priority, sumSale;
 
-         }
 
-         List<Agent> LstAgent = new List<Agent>();
 
-         int AgentPerPage = 10;  // кол-во записей на страницу
 
-         int startNum = 0;  // номер самой первой записи для отображения в DataGridView
 
-         /// <summary>
 
-         /// получить данные из базы данных и сохранить их в список List
 
-         /// </summary>
 
-         void GetDateFromDB()
 
-         {
 
-             SqlConnection con = new SqlConnection(TxtCon);
 
-             con.Open();
 
-             SqlCommand query = new SqlCommand(@"SELECT Agent.Title, AgentType.Title AS TypeOrg, Agent.Phone, Agent.Logo, Agent.Priority, (Select sum(ProductCount)
 
- from ProductSale
 
- Where ProductSale.AgentID = Agent.ID
 
- Group by AgentID) as sumSale
 
- FROM            Agent INNER JOIN
 
-                          AgentType ON Agent.AgentTypeID = AgentType.ID", con);
 
-             SqlDataReader res = query.ExecuteReader();
 
-             while(res.Read())
 
-             {
 
-                 Agent agent = new Agent();
 
-                 agent.Title = res["Title"].ToString();
 
-                 agent.Type = res["TypeOrg"].ToString();
 
-                 agent.Phone = res["Phone"].ToString();
 
-                 agent.Logo = res["Logo"].ToString();
 
-                 agent.Priority = res["Priority"].ToString();
 
-                 agent.sumSale = res["sumSale"].ToString();
 
-                 if (agent.sumSale == "")
 
-                     agent.sumSale = "0";
 
-                 LstAgent.Add(agent);
 
-             }
 
-             con.Close();
 
-         }
 
-         /// <summary>
 
-         /// вывести данные текущей страницы в DataGridView
 
-         /// </summary>
 
-         void FillDgv()
 
-         {
 
-             dgvAgents.Rows.Clear();
 
-             // перебор записей для вывода в DataGridView
 
-             // startNum - номер первой записи на текущей странице
 
-             // AgentPerPage - кол-во записей для отображения на странице
 
-             for (int i = startNum; i< startNum + AgentPerPage; i++)
 
-             {
 
-                 if (i > LstAgent.Count - 1)
 
-                     break;
 
-                 int procent = 0;
 
-                 int sumSale = int.Parse(LstAgent[i].sumSale);
 
-                 if (sumSale >= 10 && sumSale < 20)
 
-                     procent = 5;
 
-                 if (sumSale >= 20 && sumSale < 30)
 
-                     procent = 10;
 
-                 if (sumSale >= 30 && sumSale < 40)
 
-                     procent = 20;
 
-                 if (sumSale >= 40)
 
-                     procent = 25;
 
-                 string Template = $@"{LstAgent[i].Type} | {LstAgent[i].Title}
 
- {LstAgent[i].sumSale} продаж
 
- {LstAgent[i].Phone}
 
- Приоритетность: {LstAgent[i].Priority}";
 
-                 try
 
-                 {
 
-                     // вывести в таблицу логотип агента, данные об агенте и процент скидки для агента
 
-                     dgvAgents.Rows.Add(Image.FromFile(Application.StartupPath + "\\" 
 
-                         + LstAgent[i].Logo), Template, procent + "%\n");
 
-                 }
 
-                 catch
 
-                 {
 
-                     // если файл с логотипом агента отсутствует или поврежден, то вывести 
 
-                     // заглушку из ресурсов
 
-                     dgvAgents.Rows.Add(Properties.Resources.picture, Template, procent + "%\n");
 
-                 }
 
-                 // если у агента есть продажи, то выделить строку с этим агентом зеленым цветом
 
-                 if (LstAgent[i].sumSale != "0")
 
-                     dgvAgents.Rows[dgvAgents.RowCount - 1].DefaultCellStyle.BackColor = Color.LightGreen;
 
-                
 
-             }
 
-             // кол-во страниц исходя из кол-ва записей на одной странице
 
-             int countpages = LstAgent.Count / AgentPerPage;
 
-             // если есть последняя неполная страница, то увеличить кол-во страниц на одну
 
-             if (LstAgent.Count % AgentPerPage != 0)
 
-                 countpages++;
 
-             // очистить панель с закладками от старых меток с номерами страниц
 
-             panelPages.Controls.Clear();
 
-             for (int i = 1; i <= countpages; i++)
 
-             {
 
-                 Label lblPage = new Label();
 
-                 lblPage.Text = i.ToString();
 
-                 // метку со страницей выравнивать по правому краю панели
 
-                 lblPage.Dock = DockStyle.Right;
 
-                 lblPage.AutoSize = true;  // включить AutoSize для автоматического изменения размеров
 
-                 // подключить обработчик события Click
 
-                 lblPage.Click += LblPage_Click;
 
-                 // если выводится номер текущей страницы, то установить для него подчеркивание
 
-                 if (i == startNum / AgentPerPage + 1)
 
-                     lblPage.Font = new Font(lblPage.Font, FontStyle.Underline);
 
-                 // добавить созданную метку на панель
 
-                 panelPages.Controls.Add(lblPage);
 
-             }
 
-         }
 
-         private void LblPage_Click(object sender, EventArgs e)
 
-         {
 
-             // прочитать номер страницы с метки, на которой выполнили щелчок
 
-             int n = int.Parse((sender as Label).Text);
 
-             // определить номер первой записи, которая должна отображаться в DatagridView
 
-             startNum = n * AgentPerPage - AgentPerPage;
 
-             // обновить записи в DatagridView
 
-             FillDgv();
 
-         }
 
-         private void Form1_Load(object sender, EventArgs e)
 
-         {
 
-             GetDateFromDB();
 
-             FillDgv();
 
-         }
 
-     }
 
- }
 
 
  |