public async Task <bool> ToggleLocationEnabled(int locationId) { Location location = await _db.Location.FindAsync(locationId); location.Enabled = !location.Enabled; await _db.SaveChangesAsync(); return(location.Enabled); }
public async Task <FoodOrder> Create(CydcContext db, int userId, FoodOrderClientInfo clientInfo) { var menu = await db.FoodMenu.FindAsync(MenuId); var dateNow = DateTime.Now; var foodOrder = new FoodOrder { OrderUserId = userId, OrderTime = dateNow, LocationId = AddressId, FoodMenuId = MenuId, TasteId = TasteId, Comment = Comment, FoodOrderClientInfo = clientInfo, }; foodOrder.AccountDetails.Add(new AccountDetails { UserId = userId, CreateTime = dateNow, Amount = -menu.Price }); db.Add(foodOrder); await db.SaveChangesAsync(); decimal amount = await db.AccountDetails.Where(x => x.UserId == userId).SumAsync(x => x.Amount); if (amount >= 0) { await AutoPay(db, foodOrder); } return(foodOrder); }
private async Task <int> AutoPay(CydcContext db, FoodOrder order) { order = await db.FoodOrder .Include(x => x.FoodOrderPayment) .SingleAsync(x => x.Id == order.Id); order.FoodOrderPayment = new FoodOrderPayment { PayedTime = DateTime.Now }; return(await db.SaveChangesAsync()); }
public async Task <bool> ToggleStatus(int menuId) { FoodMenu menu = _db.FoodMenu.Find(menuId); menu.Enabled = !menu.Enabled; await _db.SaveChangesAsync(); return(menu.Enabled); }
public async Task <IActionResult> SaveComment(int orderId, [FromBody] string comment) { FoodOrder order = await _db.FoodOrder.FindAsync(orderId); if (order.OrderUserId != int.Parse(User.GetUserId())) { return(Forbid()); } if (order.OrderTime < DateTime.Now.Date) { return(BadRequest("Order must be today.")); } order.Comment = comment; await _db.SaveChangesAsync(); return(Ok(order.Comment)); }
public async Task <IActionResult> Remind(int toUserId) { var user = await _db.Users .Where(x => x.Id == toUserId) .Select(x => new { UserId = x.Id, UserName = x.UserName, Phone = x.PhoneNumber, Balance = x.AccountDetails.Sum(v => v.Amount), HasToday = x.SmsSendLogReceiveUser.Any(v => v.SendTime > DateTime.Now.Date), }) .FirstOrDefaultAsync(); if (user == null) { return(BadRequest("用户不存在。")); } if (string.IsNullOrWhiteSpace(user.Phone)) { return(BadRequest($"用户电话不存在或格式不对: {user.Phone}。")); } if (user.Balance >= 0) { return(BadRequest($"用户账户余额必须大于0: {user.Balance}。")); } if (user.HasToday) { return(BadRequest($"一天只能给用户催一次帐。")); } string[] parameters = new[] { user.UserName, (-user.Balance).ToString("N2") }; var smsSendLog = new SmsSendLog { OperationUserId = int.Parse(User.GetUserId()), ReceiveUserId = toUserId, SendTime = DateTime.Now, TemplateId = _smsTemplateConfig.RemindTemplateId, ReceiveUserPhone = user.Phone, Parameter = JsonConvert.SerializeObject(parameters), }; _db.SmsSendLog.Add(smsSendLog); await _db.SaveChangesAsync(); var client = new SmsSingleSender(_smsConfig.AppId, _smsConfig.AppKey); var result = client.sendWithParam("86", user.Phone, templateId: _smsTemplateConfig.RemindTemplateId, parameters: parameters, sign: _smsTemplateConfig.Sign, extend: "", ext: ""); smsSendLog.SmsSendResult = new SmsSendResult { ErrorMessage = result.errMsg, ExtensionMessage = result.ext, ErrorCode = result.result, Fee = (byte)result.fee, Sid = result.sid, }; await _db.SaveChangesAsync(); return(result.result switch { 0 => Ok(), _ => BadRequest(result.errMsg), });