コード例 #1
0
ファイル: OrdersController.cs プロジェクト: ivdmi/aspirantura
        // изменить список аспирантов, принадлежащих к приказу
        private async Task AddOrUpdateAssignedAspirants(Order order)
        {
            foreach (var aspirant in order.Aspirants)
            {
                AspirantOrder aspirantOrder = await _context.AspirantOrders.FirstOrDefaultAsync(a => (a.AspirantId == aspirant.Id && a.OrderId == order.Id));

                if (aspirant.Assigned)
                {
                    if (aspirantOrder != null)
                    {
                        aspirantOrder.AspirantId = aspirant.Id;
                        aspirantOrder.OrderId    = order.Id;
                        _context.AspirantOrders.Update(aspirantOrder);
                    }
                    else
                    {
                        aspirantOrder = new AspirantOrder {
                            AspirantId = aspirant.Id, OrderId = order.Id
                        };
                        _context.AspirantOrders.Add(aspirantOrder);
                    }
                }
                else
                {
                    if (aspirantOrder != null)
                    {
                        _context.AspirantOrders.Remove(aspirantOrder);
                    }
                }
            }
            await _context.SaveChangesAsync();
        }
コード例 #2
0
ファイル: OrdersController.cs プロジェクト: ivdmi/PGC
        // изменить список аспирантов в приказе - в _context.AspirantOrders
        private async Task EditAssignedAspirantsInOrder(int orderId, ICollection <Aspirant> deletedAspirants, ICollection <Aspirant> addedAspirants)
        {
            // пересечение двух множеств по Id
            // Many to Many - выбрать аспирантов по приказу из _context.Aspirants, которые входили в приказ до изменений
            List <Aspirant> oldAspirants = GetAspirantsInOrder(orderId).ToList();

            List <AspirantOrder> aspirantsAO = _context.AspirantOrders.Where(i => i.OrderId == orderId).ToList();

            // выбрать в AspirantOrders записи, которые отсутствуют в aspirantsInOrder (deletedAspirants) - для удаления
            ICollection <AspirantOrder> forDelete = aspirantsAO.Where(ao => deletedAspirants.Any(a => a.Id == ao.AspirantId)).ToList();

            // Добавить новых аспирантов в AspirantOrders
            foreach (var aspirant in addedAspirants)
            {
                AspirantOrder aspirantOrder = new AspirantOrder {
                    AspirantId = aspirant.Id, OrderId = orderId
                };
                _context.AspirantOrders.Add(aspirantOrder);
            }

            // Удалить  аспирантов из AspirantOrders
            _context.AspirantOrders.RemoveRange(forDelete);

            await _context.SaveChangesAsync();
        }
コード例 #3
0
ファイル: OrdersController.cs プロジェクト: ivdmi/PGC
 // добавить в AspirantOrder список аспирантов, принадлежащих к приказу
 private async Task AddAssignedAspirants(Order order)
 {
     foreach (var aspirant in order.Aspirants)
     {
         AspirantOrder aspirantOrder = new AspirantOrder {
             AspirantId = aspirant.Id, OrderId = order.Id
         };
         _context.AspirantOrders.Add(aspirantOrder);
     }
     await _context.SaveChangesAsync();
 }
コード例 #4
0
ファイル: OrdersController.cs プロジェクト: ivdmi/aspirantura
        // изменить курс и статус аспиранта
        private async Task UpdateAspirantStatus(Order order)
        {
            foreach (var assignedAspirant in order.Aspirants.Where(aa => aa.Assigned))
            {
                Aspirant aspirant = _context.Aspirants.First(a => a.Id == assignedAspirant.Id);
                if (aspirant != null)
                {
                    aspirant.Course++;
                    switch (order.OrderType.Id)
                    {
                    case (int)OrderTypeEnum.Зарахування:
                        aspirant.Course = 1;
                        //                            aspirant.StatustypeId = assignedAspirant.
                        break;
                    }
                }

                AspirantOrder aspirantOrder = await _context.AspirantOrders.FirstOrDefaultAsync(a => (a.AspirantId == assignedAspirant.Id && a.OrderId == order.Id));

                if (assignedAspirant.Assigned)
                {
                    if (aspirantOrder != null)
                    {
                        aspirantOrder.AspirantId = assignedAspirant.Id;
                        aspirantOrder.OrderId    = order.Id;
                        _context.AspirantOrders.Update(aspirantOrder);
                    }
                    else
                    {
                        aspirantOrder = new AspirantOrder {
                            AspirantId = assignedAspirant.Id, OrderId = order.Id
                        };
                        _context.AspirantOrders.Add(aspirantOrder);
                    }
                }
                else
                {
                    if (aspirantOrder != null)
                    {
                        _context.AspirantOrders.Remove(aspirantOrder);
                    }
                }
            }
            await _context.SaveChangesAsync();
        }