public Guid Save(ReturnFromClientWaybill returnFromClientWaybill) { // если номер генерируется автоматически if (returnFromClientWaybill.Number == "") { var lastDocumentNumbers = returnFromClientWaybill.Recipient.GetLastDocumentNumbers(returnFromClientWaybill.Date.Year); var number = lastDocumentNumbers.ReturnFromClientWaybillLastNumber + 1; // пока не найдем уникальный номер while (!IsNumberUnique(number.ToString(), Guid.Empty, returnFromClientWaybill.Date, returnFromClientWaybill.Recipient)) { number = number + 1; } returnFromClientWaybill.Number = number.ToString(); lastDocumentNumbers.ReturnFromClientWaybillLastNumber = number; } else { ValidationUtils.Assert(IsNumberUnique(returnFromClientWaybill.Number, returnFromClientWaybill.Id, returnFromClientWaybill.Date, returnFromClientWaybill.Recipient), String.Format("Накладная с номером {0} уже существует. Укажите другой номер.", returnFromClientWaybill.Number)); } //Проверяем имеет ли указанная команда реализации в указанной сделке var teamList = dealRepository.GetTeamListFromSales(returnFromClientWaybill.Deal.Id); ValidationUtils.Assert(teamList.Contains(returnFromClientWaybill.Team), String.Format("Команда «{0}» не имеет реализаций в сделке «{1}».", returnFromClientWaybill.Team.Name, returnFromClientWaybill.Deal.Name)); returnFromClientWaybillRepository.Save(returnFromClientWaybill); return(returnFromClientWaybill.Id); }