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); } }