/// <summary> /// Edits a bill in the database. /// </summary> /// <param name="bill">The edited bill.</param> /// <returns>The updated bill data model.</returns> public async Task <BillDataModel> EditBill(BillDataModel bill) { using (var context = new DatabaseContext()) { var toEdit = await GetBill(bill.Id); if (toEdit == null) { throw new Exception(Bill.Error_CouldNotFindBill); } bill.CreationTime = toEdit.CreationTime; var category = await categoryRepository.GetOrAdd(bill.Category); bill.Category = category; bill.CategoryId = category.Id; context.Bills.Attach(bill); context.Entry(bill).State = EntityState.Modified; var rows = await context.SaveChangesAsync(); return(rows > 0 ? bill : null); } }
public Boolean SendTemplateMsg(BillDataModel billData) { var accessToken = AccessTokenContainer.GetAccessToken(Config.APPID); //由于源代码采用分支管理,这里将不再编写兼容所有模板消息的代码 var templateId = "KpddG3wzOIVa5WOqFIYO4rBQL7knr0UJltcUWUqokAc"; var data = new { first = new TemplateDataItem(""), keyword1 = new TemplateDataItem(billData.ACC_MONEY), keyword2 = new TemplateDataItem(billData.ACC_WATER), remark = new TemplateDataItem(billData.BILLING_MONTH.ToString()) }; string url = ""; SendTemplateMessageResult result = TemplateApi.SendTemplateMessage(Config.APPID, billData.openID, templateId, url, data); if (result.errmsg == "ok") { return(true); } else { return(false); } }
/// <summary> /// 获取账单信息并推送账单 /// </summary> public void GetMsgData() { Boolean isContinue = true; while (isContinue) { String sql = @"select top 100 ID, openID , CARD_ID , CARD_ADDRESS , ACC_MONEY , ACC_WATER , BILLING_MONTH from dbo.PushBill where State = 0 and SendNum < 4;"; try { DataTable dt = SqlHelper.ExecuteDataset(Config.WeChatConnString, CommandType.Text, sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { BillDataModel model = new BillDataModel(); foreach (var item in model.GetType().GetProperties()) { if (dr.Table.Columns.Contains(item.Name)) { if (DBNull.Value != dr[item.Name]) { item.SetValue(model, Convert.ChangeType(dr[item.Name], item.PropertyType), null); } } } if (SendTemplateMsg(model)) { SetState(dr["ID"].ToString()); } else //修改推送次数 { UpdateSendNum(dr["ID"].ToString()); } } } else { isContinue = false; } } catch (Exception ex) { isContinue = false; _logger.Error("推送账单出错,错误信息:" + ex.Message + "堆栈信息:" + ex.StackTrace); } } }
public async Task <IActionResult> DwonLoadTosql([FromBody] BillDataModel request) { var hosts = HttpContext.Request.Host; _Apiloger.LogDebug($"{hosts.Host}正在请求SortArray 端口是 {hosts.Port},{hosts.Value}"); var Count = await _downLoadInterface.GetFXStmtLines(request.BillDate); return(Ok(new SucessModelCount(Count))); }
private static string PrepareQuery(BillDataModel bill) { string searchTerm = bill.Title; if (bill.Title.Contains("Act")) { searchTerm = searchTerm.ToLower().Replace("act", "bill"); searchTerm = Regex.Replace(searchTerm, @"\d+$", String.Empty); } return(searchTerm); }
/// <summary> /// Creates an instance of the <see cref="EditBillResponse" /> class. /// </summary> /// <param name="model">The data model.</param> /// <param name="requestReference">The request reference.</param> /// <returns> /// The response object. /// </returns> public EditBillResponse NewEditBillResponse(BillDataModel model, Guid requestReference) { if (model == null) { throw new ArgumentNullException(nameof(model)); } if (requestReference.Equals(Guid.Empty)) { throw new ArgumentNullException(nameof(requestReference)); } return(new EditBillResponse { Bill = BillDataModelToProxy(model), RequestReference = requestReference }); }
/// <summary> /// Converts a bill data model to a proxy. /// </summary> /// <param name="model">The model.</param> /// <returns>The proxy.</returns> private static BillProxy BillDataModelToProxy(BillDataModel model) { return(new BillProxy { Amount = model.Amount, Category = new CategoryProxy { Id = model.Category.Id, Name = model.Category.Name }, CategoryId = model.CategoryId, Id = model.Id, Name = model.Name, ReoccurringPeriod = model.ReoccurringPeriod, StartDate = model.StartDate, UserId = model.UserId }); }
/// <summary> /// Creates a new instance of the <see cref="GetBillResponse" />class. /// </summary> /// <param name="bill">The bill.</param> /// <param name="requestReference">The request reference.</param> /// <returns>The response object.</returns> public GetBillResponse NewGetBillResponse(BillDataModel bill, Guid requestReference) { if (bill == null) { throw new ArgumentNullException(nameof(bill)); } if (requestReference.Equals(Guid.Empty)) { throw new ArgumentNullException(nameof(requestReference)); } return(new GetBillResponse { RequestReference = requestReference, Bill = BillDataModelToProxy(bill) }); }
public BillViewModel MapBillDataModel(BillDataModel model) { Id = model.Id; Stage = model.Stage; Title = model.Title; Description = model.Description; House = model.House; BillType = model.BillType; UpdatedDate = model.UpdatedDate; Url = model.Url; SocialScore = model.SocialScore; EconomicScore = model.EconomicScore; IsNew = model.IsNew; IsUpdated = model.IsUpdated; return(this); }
/// <summary> /// Adds a bill to the database. /// </summary> /// <param name="dataModel">The data model.</param> /// <returns> /// The bill data model. /// </returns> public async Task <BillDataModel> AddBill(BillDataModel dataModel) { using (var context = new DatabaseContext()) { dataModel.Id = Guid.NewGuid(); var category = await categoryRepository.GetOrAdd(dataModel.Category); dataModel.Category = category; dataModel.CategoryId = category.Id; dataModel.CreationTime = DateTime.Now; context.Bills.Add(dataModel); var rows = await context.SaveChangesAsync(); return(rows > 0 ? dataModel : null); } }
public void SetUp() { validGuid = Guid.NewGuid(); validDataModel = new BillDataModel { Amount = 1, Category = new CategoryDataModel { CreationTime = DateTime.Now, Id = validGuid, Name = "TEST" }, CategoryId = validGuid, CreationTime = DateTime.Now, Id = validGuid, Name = "TEST", ReoccurringPeriod = 1, StartDate = DateTime.Now, UserId = validGuid }; validProxy = new BillProxy { Amount = 1, Category = new CategoryProxy { Id = validGuid, Name = "TEST" }, CategoryId = validGuid, Id = validGuid, Name = "TEST", ReoccurringPeriod = 1, StartDate = DateTime.Now, UserId = validGuid }; assembler = new BillAssembler(); }
public void SetUp() { userId = Guid.NewGuid(); expenditureId = Guid.NewGuid(); validData = new List <BillDataModel>(); invalidDeleteBillRequest = new DeleteBillRequest(); invalidEditBillRequest = new EditBillRequest(); invalidGetBillsForUserForMonthRequest = new GetBillsForUserForMonthRequest(); invalidGetBillsForUserRequest = new GetBillsForUserRequest(); invalidGetBillRequest = new GetBillRequest(); invalidAddBillRequest = new AddBillRequest(); validBillDataModel = new BillDataModel { Amount = 1, Category = new CategoryDataModel { CreationTime = DateTime.Now, Id = Guid.NewGuid(), Name = "TEST" }, CreationTime = DateTime.Now, CategoryId = Guid.NewGuid(), Id = Guid.NewGuid(), UserId = Guid.NewGuid() }; expenditureProxy = new BillProxy { Amount = 1.0, Category = new CategoryProxy { Id = Guid.NewGuid(), Name = "TEST" }, CategoryId = Guid.NewGuid(), Id = Guid.NewGuid(), UserId = Guid.NewGuid() }; validDeleteBillRequest = new DeleteBillRequest { BillId = Guid.NewGuid(), Username = "******" }; validGetBillsForUserForMonthRequest = new GetBillsForUserForMonthRequest { MonthNumber = 1, UserId = userId, Username = "******" }; validAddBillRequest = new AddBillRequest { Bill = expenditureProxy, Username = "******" }; validGetBillsForUserRequest = new GetBillsForUserRequest { UserId = userId, Username = "******" }; validGetBillRequest = new GetBillRequest { BillId = expenditureId, Username = "******" }; validEditBillRequest = new EditBillRequest { Bill = expenditureProxy, Username = "******" }; validGetBillsForUserResponse = new GetBillsForUserResponse { Bills = new List <BillProxy> { expenditureProxy } }; validGetBillResponse = new GetBillResponse { Bill = expenditureProxy }; validAddBillResponse = new AddBillResponse { Bill = expenditureProxy }; validEditBillResponse = new EditBillResponse { Bill = expenditureProxy }; validDeleteBillResponse = new DeleteBillResponse { DeleteSuccess = true }; validGetBillsForUserForMonthResponse = new GetBillsForUserForMonthResponse { Data = new List <KeyValuePair <DateTime, double> > { new KeyValuePair <DateTime, double>(DateTime.Now, 1.0) } }; assembler = Substitute.For <IBillAssembler>(); repository = Substitute.For <IBillRepository>(); dataTransformer = Substitute.For <IBillDataTransformer>(); repository.AddBill(validBillDataModel).Returns(validBillDataModel); repository.AddBill(null).Throws(new Exception("TEST")); repository.DeleteBill(validDeleteBillRequest.BillId).Returns(true); repository.DeleteBill(invalidDeleteBillRequest.BillId).Throws(new Exception("TEST")); repository.EditBill(validBillDataModel).Returns(validBillDataModel); repository.EditBill(null).Throws(new Exception("TEST")); repository.GetBill(expenditureId).Returns(validBillDataModel); repository.GetBill(Guid.Empty).Throws(new Exception("TEST")); repository.GetBillsForUser(validGetBillsForUserRequest.UserId) .Returns(new List <BillDataModel> { validBillDataModel }); repository.GetBillsForUser(Guid.Empty).Throws(new Exception("TEST")); dataTransformer.GetOutgoingBillsForMonth(Arg.Any <int>(), Arg.Any <List <BillDataModel> >()) .Returns( new List <KeyValuePair <DateTime, double> > { new KeyValuePair <DateTime, double>(DateTime.Now, 1.0) }); dataTransformer.GetBillCategoryChartData(Arg.Any <List <BillDataModel> >()) .Returns(new List <KeyValuePair <string, int> > { new KeyValuePair <string, int>() }); assembler.NewAddBillResponse(validBillDataModel, validAddBillRequest.RequestReference) .Returns(validAddBillResponse); assembler.NewDeleteBillResponse(true, validDeleteBillRequest.BillId) .Returns(validDeleteBillResponse); assembler.NewEditBillResponse( validBillDataModel, validEditBillRequest.RequestReference) .Returns(validEditBillResponse); assembler.NewBillDataModel(expenditureProxy).Returns(validBillDataModel); assembler.NewGetBillsForUserForMonthResponse( Arg.Any <List <KeyValuePair <DateTime, double> > >(), validGetBillsForUserForMonthRequest.RequestReference) .Returns(validGetBillsForUserForMonthResponse); assembler.NewGetBillsForUserResponse( Arg.Any <List <BillDataModel> >(), validGetBillsForUserRequest.RequestReference) .Returns(validGetBillsForUserResponse); assembler.NewDeleteBillResponse(true, validDeleteBillRequest.RequestReference) .Returns(validDeleteBillResponse); assembler.NewGetBillResponse(validBillDataModel, validGetBillRequest.RequestReference) .Returns(validGetBillResponse); errorHelper = Substitute.For <IErrorHelper>(); errorHelper.Create(Arg.Any <Exception>(), Arg.Any <string>(), Arg.Any <Type>(), Arg.Any <string>()) .Returns(new ResponseErrorWrapper()); errorHelper.Create(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <Type>(), Arg.Any <string>()) .Returns(new ResponseErrorWrapper()); orchestrator = new BillOrchestrator(assembler, repository, dataTransformer, errorHelper); }