public async Task <IActionResult> Post([FromBody] JToken jObj) { var orderVms = jObj["orders"].ToObject <List <SubscriptionOrderAddViewModel> >(); var milkmanId = jObj["milkmanId"].ToObject <int>(); if (!orderVms.Any()) { return(BadRequest()); } if (!TryValidateModel(orderVms)) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } } var hasDayBeenConfirmed = await HasSubscriptionDayBeenConfirmed(); var monthPromotionIds = orderVms.Select(x => x.SubscriptionMonthPromotionId).Distinct().ToList(); var promotionBonusDates = await _subscriptionMonthPromotionBonusDateRepository.AllIncluding(x => x.SubscriptionMonthPromotionBonus) .Where(x => monthPromotionIds.Contains(x.SubscriptionMonthPromotionBonus.SubscriptionMonthPromotion.Id)).ToListAsync(); if (promotionBonusDates.Any()) { var bonusDates = promotionBonusDates.Select(x => x.Date).ToList(); _subscriptionOrderService.ValidateOrderBonusDates(bonusDates, Today, Tomorrow, hasDayBeenConfirmed); foreach (var orderVm in orderVms) { if (orderVm.SubscriptionMonthPromotionId.HasValue) { orderVm.SubscriptionOrderBonusDates = promotionBonusDates.Where(x => x.SubscriptionMonthPromotionBonus.SubscriptionMonthPromotionId == orderVm.SubscriptionMonthPromotionId) .Select(x => new SubscriptionOrderBonusDateViewModel { SubscriptionMonthPromotionBonusDateId = x.Id }) .ToList(); } } } _subscriptionOrderService.ValidateOrderDatesAndModifiedBonusDates(orderVms, Today, Tomorrow, hasDayBeenConfirmed); var invalidateDates = await _subscriptionOrderService.ValidateDayCountAsync(milkmanId, orderVms); if (invalidateDates.Any()) { return(BadRequest(invalidateDates)); } var createTime = _subscriptionOrderService.AddSubscriptionOrders(orderVms, UserName); if (!await UnitOfWork.SaveAsync()) { return(StatusCode(500, "保存时出错")); } return(Ok(createTime)); }
public async Task <IActionResult> Post([FromBody] JToken jObj) { var orderVms = jObj["orders"].ToObject <List <SubscriptionOrderAddViewModel> >(); if (!orderVms.Any()) { return(BadRequest()); } if (!TryValidateModel(orderVms)) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } } var hasDayBeenConfirmed = await HasSubscriptionDayBeenConfirmed(); var bonusDateIds = orderVms.SelectMany(x => x.SubscriptionOrderBonusDates) .Select(x => x.SubscriptionMonthPromotionBonusDateId).Distinct().ToList(); var promotionBonusDates = await _subscriptionMonthPromotionBonusDateRepository.All .Where(x => bonusDateIds.Contains(x.Id)).ToListAsync(); if (promotionBonusDates.Any()) { var bonusDates = promotionBonusDates.Select(x => x.Date).ToList(); _subscriptionOrderService.ValidateOrderBonusDates(bonusDates, Today, Tomorrow, hasDayBeenConfirmed); } _subscriptionOrderService.ValidateOrderDatesAndModifiedBonusDates(orderVms, Today, Tomorrow, hasDayBeenConfirmed); await _subscriptionOrderService.ValidateDayCountAsync(orderVms, promotionBonusDates); _subscriptionOrderService.AddSubscriptionOrders(orderVms, UserName); if (!await UnitOfWork.SaveAsync()) { return(StatusCode(500, "保存时出错")); } return(NoContent()); }