public async Task <IHttpActionResult> UpdateProperty(OrderTemplateDetail viewModel)
        {
            try
            {
                ensureSeq(ref viewModel);
                var row = db.OrderTemplateDetails.FirstOrDefault(x => x.TemplateCode == viewModel.TemplateCode && x.ProductCode == viewModel.ProductCode);
                //update
                row.ProductCode  = viewModel.ProductCode;
                row.TemplateCode = viewModel.TemplateCode;

                var runningOrder = db.OrderTemplateDetails.Where(x => x.Seq >= viewModel.Seq && x.TemplateCode == viewModel.TemplateCode && x.ProductCode != viewModel.ProductCode).OrderBy(x => x.Seq).ToList();
                var continueSeq  = viewModel.Seq;
                foreach (var r in runningOrder)
                {
                    continueSeq++;
                    r.Seq = continueSeq;
                }

                await db.SaveChangesAsync();

                return(Json(result));
            }
            catch (DbEntityValidationException ex)
            {
                base.ErrorLog(string.Empty, ex);
            }
            catch (Exception ex)
            {
                base.ErrorLog(string.Empty, ex);
            }
            return(Json(result));
        }
 private void ensureSeq(ref OrderTemplateDetail viewModel)
 {
     if (viewModel.Seq == null || viewModel.Seq == 0)
     {
         var latest = db.OrderTemplateDetails.OrderByDescending(x => x.Seq).FirstOrDefault();
         if (latest != null && latest.Seq.HasValue)
         {
             viewModel.Seq = latest.Seq.Value;
         }
         else
         {
             viewModel.Seq = 1;
         }
     }
 }