public ActionResult PutVoucher(int id, VoucherUpdateRequest entity) { if (id != entity.Id) { return(BadRequest()); } bool success = _voucherSer.Update(entity); if (success) { var updated = _voucherSer.GetById(entity.Id); return(Ok(updated)); } return(Problem("Update failed!")); }
public bool Update(VoucherUpdateRequest entity) { Voucher existed = _vouRepo.GetById(entity.Id); if (existed == null) { return(false); } string description = entity.Description; int quantity = entity.Quantity; string code = entity.Code; DateTime beginDate = entity.BeginDate; DateTime expiredDate = entity.ExpiredDate; int maxDiscount = entity.MaxDiscountAmount; int minRequiredAmount = entity.MinRequiredAmount; int percentDiscount = entity.PercentDiscount; int proId = entity.PromotionId; if (description != null) { if (!util.ValidRangeLengthInput(description, 1, 250)) { return(false); } existed.Description = description.Trim(); } if (quantity > 0) { int used = existed.Quantity - existed.Available; if (quantity < used) { return(false); } int marginQuantity = quantity - existed.Quantity; existed.Quantity = quantity; existed.Available += marginQuantity; } if (code != null) { if (!util.ValidRangeLengthInput(code, 1, 20)) { return(false); } Voucher existedCode = _vouRepo.GetAll().FirstOrDefault(e => e.Code.Trim().ToLower().Equals(code.Trim().ToLower())); if (existedCode != null) { if (existedCode.Id != entity.Id) { return(false); } } existed.Code = code; } if (maxDiscount > 0) { existed.MaxDiscountAmount = maxDiscount; } if (minRequiredAmount > 0) { existed.MinRequiredAmount = minRequiredAmount; } if (percentDiscount > 0) { existed.PercentDiscount = percentDiscount; } if (proId > 0) { existed.PromotionId = proId; } if (beginDate.Millisecond > 0 && expiredDate.Millisecond > 0) { if (beginDate.CompareTo(expiredDate) >= 0) { return(false); } existed.BeginDate = beginDate; existed.ExpiredDate = expiredDate; } if (beginDate.Millisecond > 0 && expiredDate.Millisecond == 0) { if (beginDate.CompareTo(existed.ExpiredDate) >= 0) { return(false); } existed.BeginDate = beginDate; } if (beginDate.Millisecond == 0 && expiredDate.Millisecond > 0) { if (existed.BeginDate.CompareTo(expiredDate) >= 0) { return(false); } existed.ExpiredDate = expiredDate; } return(_vouRepo.Update(existed)); }