示例#1
0
        public NoteResults NewNoteResult(NoteResults noteResult)
        {
            if (NoteDataExists(noteResult.ProjectId, noteResult.DatasetId))
            {
                throw new ApplicationException("Add new note result [" + noteResult.ProjectId.ToString() + "][" + noteResult.DatasetId.ToString() + "] failed.");
            }

            var tableNoteResult = noteResult.GetTableObject();
            var id = m_db.Insert("NoteResults", "result_id", true, tableNoteResult);

            noteResult.ResultId = (int)id;
            return(noteResult);
        }
        private void CreateDataset(Project project, string asOfDate)
        {
            var projectId = project.ProjectId;
            var datasets  = m_dbAdapter.Dataset.GetDatasetByProjectId(projectId);

            if (datasets.Any(x => x.AsOfDate == asOfDate))
            {
                throw new ApplicationException("产品[" + project.Name + "]中,dataset [" + asOfDate + "]已存在。");
            }

            //Find payment date
            DateTime?paymentDate  = null;
            var      dealSchedule = NancyUtils.GetDealSchedule(project.ProjectId);

            if (dealSchedule == null || dealSchedule.PaymentDates == null || dealSchedule.PaymentDates.Length == 0)
            {
                //创建第一期Dataset时,没有模型数据,无法读取DealSchedule,此时PaymentDate从数据库中取得
                if (project.CnabsDealId.HasValue)
                {
                    var paymentDates = m_dbAdapter.Model.GetPaymentDates(project.CnabsDealId.Value);
                    var date         = DateTime.ParseExact(asOfDate, "yyyyMMdd", CultureInfo.InvariantCulture);
                    if (paymentDates.All(x => x < date))
                    {
                        throw new ApplicationException("产品[" + project.Name + "]中,dataset [" + asOfDate + "]不在任何支付日之前。");
                    }
                    paymentDate = paymentDates.First(x => x >= date);
                }
            }
            else
            {
                //创建第N期Dataset时,有模型数据,此时PaymentDate按照DealSchedule中AsOfDate对应Index查出
                var curAsOfDate = DateUtils.ParseDigitDate(asOfDate);
                if (curAsOfDate == dealSchedule.FirstCollectionPeriodStartDate)
                {
                    paymentDate = dealSchedule.PaymentDates[0];
                }
                else
                {
                    for (int i = 0; i < dealSchedule.DeterminationDates.Length - 1; ++i)
                    {
                        if (curAsOfDate == dealSchedule.DeterminationDates[i])
                        {
                            paymentDate = dealSchedule.PaymentDates[i + 1];
                            break;
                        }
                    }
                }
            }

            CommUtils.AssertNotNull(paymentDate, "无法根据AsOfDate[" + asOfDate + "]查询到对应的支付日。");

            var notes = m_dbAdapter.Dataset.GetNotes(projectId);

            //Create dataset
            var dataset = new Dataset();

            dataset.ProjectId   = projectId;
            dataset.AsOfDate    = asOfDate;
            dataset.PaymentDate = paymentDate;
            LogEditProduct(EditProductType.CreateProduct, projectId, "创建Dataset[" + projectId + "][" + asOfDate + "]", "");
            dataset = m_dbAdapter.Dataset.NewDataset(dataset);

            //Create note result
            var noteResult = new NoteResults();

            noteResult.ProjectId = projectId;
            noteResult.DatasetId = dataset.DatasetId;
            LogEditProduct(EditProductType.CreateProduct, projectId, "创建NoteResult[" + projectId + "][" + dataset.DatasetId + "]", "");
            noteResult = m_dbAdapter.Dataset.NewNoteResult(noteResult);

            //Create note data
            foreach (var note in notes)
            {
                var noteData = new NoteData();
                noteData.NoteId    = note.NoteId;
                noteData.DatasetId = dataset.DatasetId;
                LogEditProduct(EditProductType.CreateProduct, projectId, "创建NoteData[" + note.NoteName + "][" + note.NoteId + "][" + dataset.DatasetId + "]", "");
                noteData = m_dbAdapter.Dataset.NewNoteData(noteData);
            }
        }