public ModelContractClient GetElement(int id)
        {
            ModelContractClient element = context.ContractClients.FirstOrDefault(rec => rec.Id == id);

            if (element != null)
            {
                return(new ModelContractClient
                {
                    Id = element.Id,
                    AgentId = element.AgentId,
                    ClientId = element.ClientId,
                    Sum = element.Sum,
                    DateStart = element.DateStart,
                    DateEnd = element.DateEnd,
                    Directories = context.Directories
                                  .Where(recD => recD.ContractId == element.Id).AsEnumerable()
                                  .Select(recD => new ModelDirectory
                    {
                        Id = recD.Id,
                        ContractId = recD.ContractId,
                        Data = recD.Data,
                        ServiceId = recD.ServiceId
                    })
                                  .ToList()
                });
            }
            throw new Exception("Элемент не найден");
        }
 public void DelElement(int id)
 {
     using (var transaction = context.Database.BeginTransaction())
     {
         try
         {
             ModelContractClient element = context.ContractClients.FirstOrDefault(rec => rec.Id ==
                                                                                  id);
             if (element != null)
             {
                 context.ContractClients.Remove(element);
                 context.SaveChanges();
             }
             else
             {
                 throw new Exception("Элемент не найден");
             }
             transaction.Commit();
         }
         catch (Exception)
         {
             transaction.Rollback();
             throw;
         }
     }
 }
        public void UpdElement(ModelContractClient model)
        {
            ModelContractClient element = context.ContractClients.FirstOrDefault(rec => rec.Id == model.Id);

            if (element == null)
            {
                throw new Exception("Элемент не найден");
            }
            element.AgentId   = model.AgentId;
            element.ClientId  = model.ClientId;
            element.Sum       = model.Sum;
            element.DateStart = model.DateStart;
            element.DateEnd   = model.DateEnd;
            context.SaveChanges();
        }
        public int AddElement(ModelContractClient model)
        {
            ModelContractClient element = new ModelContractClient
            {
                Id        = model.Id,
                AgentId   = model.AgentId,
                ClientId  = model.ClientId,
                Sum       = model.Sum,
                DateStart = model.DateStart,
                DateEnd   = model.DateEnd
            };

            context.ContractClients.Add(element);
            context.SaveChanges();
            return(element.Id);
        }
        public List <ModelClient> SearchByNumber(int Number)
        {
            ModelContractClient Id     = context.ContractClients.FirstOrDefault(recCI => recCI.Id == Number);
            List <ModelClient>  result = context.Clients.Where(rec => rec.Id == Id.ClientId).Select(rec => new ModelClient
            {
                Id              = rec.Id,
                FIO             = rec.FIO,
                Date            = rec.Date,
                Passport        = rec.Passport,
                ContractsClient = context.ContractClients
                                  .Where(recCI => recCI.ClientId == rec.Id).AsEnumerable()
                                  .Select(recCI => new ModelContractClient
                {
                    Id          = recCI.Id,
                    ClientId    = recCI.ClientId,
                    AgentId     = recCI.AgentId,
                    Sum         = recCI.Sum,
                    DateStart   = recCI.DateStart,
                    DateEnd     = recCI.DateStart,
                    Directories = context.Directories
                                  .Where(recD => recD.ContractId == recCI.Id).AsEnumerable()
                                  .Select(recD => new ModelDirectory
                    {
                        Id         = recD.Id,
                        ContractId = recD.ContractId,
                        Data       = recD.Data,
                        ServiceId  = recD.ServiceId
                    })
                                  .ToList()
                })
                                  .ToList()
            })
                                         .ToList();

            return(result);
        }
        public async Task SaveToJsonAsync(string fileName)
        {
            DataContractJsonSerializer formatterClient = new DataContractJsonSerializer(typeof(List <ModelClient>));
            MemoryStream msClient = new MemoryStream();

            formatterClient.WriteObject(msClient, await context.Clients.ToListAsync());
            msClient.Position = 0;
            StreamReader srClient   = new StreamReader(msClient);
            string       ClientJSON = srClient.ReadToEnd();

            srClient.Close();
            msClient.Close();

            DataContractJsonSerializer formatterContractClient = new DataContractJsonSerializer(typeof(List <ModelContractClient>));
            MemoryStream msContractClient = new MemoryStream();

            formatterContractClient.WriteObject(msContractClient, await context.ContractClients.ToListAsync());
            msContractClient.Position = 0;
            StreamReader srContractClient   = new StreamReader(msContractClient);
            string       ContractClientJSON = srContractClient.ReadToEnd();

            srContractClient.Close();
            msContractClient.Close();

            DataContractJsonSerializer formatterDirection = new DataContractJsonSerializer(typeof(List <ModelContractClient>));
            MemoryStream msDirection = new MemoryStream();

            formatterDirection.WriteObject(msDirection, await context.ContractClients.ToListAsync());
            msDirection.Position = 0;
            StreamReader srDirection   = new StreamReader(msDirection);
            string       DirectionJSON = srDirection.ReadToEnd();

            srDirection.Close();
            msDirection.Close();

            File.WriteAllText(fileName, "{\n" +
                              "    \"Client\": " + ClientJSON + ", \n" +
                              "    \"ContractClient\": " + ContractClientJSON + ", \n" +
                              "    \"Direction\": " + DirectionJSON + ", \n" +
                              "}");

            List <ModelContractClient> result = context.ContractClients.AsEnumerable().Where(rec => rec.DateEnd.Month < DateTime.Now.Month && rec.DateEnd.Year == DateTime.Now.Year)
                                                .Select(recCI => new ModelContractClient
            {
                Id = recCI.Id,
            }).ToList();

            foreach (var item in result)
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        ModelContractClient element = context.ContractClients.FirstOrDefault(rec => rec.Id == item.Id);
                        if (element != null)
                        {
                            //context.ContractClients.Remove(element);
                            context.SaveChanges();
                        }
                        else
                        {
                            throw new Exception("Элемент не найден");
                        }
                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }
        private void LoadData()
        {
            try
            {
                List <ModelContractAgent> listCA = serviceCA.GetList();
                if (listCA != null)
                {
                    comboBoxAgent.DisplayMember = "Id";
                    comboBoxAgent.ValueMember   = "Id";
                    comboBoxAgent.DataSource    = listCA;
                    comboBoxAgent.SelectedItem  = null;
                }

                List <ModelClient> listC = serviceC.GetList(new DateTime().AddYears(2000), DateTime.Now.AddYears(10));
                if (listC != null)
                {
                    comboBoxClient.DisplayMember = "FIO";
                    comboBoxClient.ValueMember   = "Id";
                    comboBoxClient.DataSource    = listC;
                    comboBoxClient.SelectedItem  = null;
                }

                List <ModelServices> listS = serviceS.GetList();
                if (listS != null)
                {
                    toolStripComboBoxService.ComboBox.DisplayMember = "NameService";
                    toolStripComboBoxService.ComboBox.ValueMember   = "Id";
                    toolStripComboBoxService.ComboBox.DataSource    = listS;
                    toolStripComboBoxService.ComboBox.SelectedItem  = 0;
                }

                textBoxSum.Text = "0";

                if (ID != null)
                {
                    List <ModelDirectory> list = serviceCC.GetListDirection(ID);
                    if (list != null)
                    {
                        dataGridView1.DataSource = list;
                        dataGridView1.Columns[1].AutoSizeMode =
                            DataGridViewAutoSizeColumnMode.Fill;
                        dataGridView1.Columns[4].Visible = false;
                        dataGridView1.Columns[5].Visible = false;
                    }

                    ModelContractClient elem = serviceCC.GetElement(Convert.ToInt32(ID));
                    if (elem != null)
                    {
                        ModelClient client = serviceC.GetElement(elem.ClientId);
                        comboBoxAgent.Text    = elem.AgentId + "";
                        comboBoxClient.Text   = client.FIO;
                        dateTimePicker1.Value = elem.DateStart;
                        dateTimePicker2.Value = elem.DateEnd;
                    }

                    textBoxSum.Text = serviceCC.GetSum(Convert.ToInt32(ID));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
        }