示例#1
0
        /// <summary>
        /// Назначить сделке указанный договор с клиентом.
        /// </summary>
        /// <param name="deal">Сделка.</param>
        /// <param name="contract">Договор с клиентом.</param>
        /// <param name="user">Пользователь, выполняющий операцию.</param>
        public void SetContract(Deal deal, ClientContract contract, User user)
        {
            if (deal.Contract == null)
            {
                CheckPossibilityToAddContract(deal, user);
            }
            else
            {
                CheckPossibilityToChangeContract(deal, user);
            }

            if (deal.Contract != contract)
            {
                CheckForMaxCashPaymentSumExceeding(deal, contract);

                var oldContract = deal.Contract;

                deal.Contract = contract;

                dealRepository.Save(deal);

                if (oldContract != null)
                {
                    if (clientContractRepository.IsUsedBySingleDeal(oldContract, deal)) //коммита еще не было, поэтому в БД у сделки еще старый договор
                    {
                        clientContractRepository.Delete(oldContract);
                    }
                }
            }
        }
示例#2
0
 /// <summary>
 /// Проверка, что договор используется одной и только одной сделкой.
 /// </summary>
 /// <param name="contract">Договор с клиентом.</param>
 /// <param name="deal">Сделка.</param>
 /// <returns>true, если договор используется только этой сделкой.</returns>
 public bool IsUsedBySingleDeal(ClientContract contract, Deal deal)
 {
     return(clientContractRepository.IsUsedBySingleDeal(contract, deal));
 }