public void SplitStrandBatch(StrandBatch sourceBatch, IEnumerable <StrandBatch> splittedBatches) { var strand = GetStrand(sourceBatch.StrandId); if (strand != null) { sourceBatch.MiscVolumeUsed = sourceBatch.PreparedVolume ?? 0; var notesBuilder = new StringBuilder() .AppendFormat("{0}\n", sourceBatch.Notes) .Append("This batch was split into batches "); foreach (var batch in splittedBatches) { notesBuilder.AppendFormat("{0} and ", batch.BatchNumber); if (!IsStrandBatchExist(batch)) { _db.SetEntityStateAdded(batch); strand.Batches.Add(batch); } } notesBuilder.Remove(notesBuilder.Length - 5, 5); sourceBatch.Notes = notesBuilder.ToString(); _db.SetEntityStateModified(sourceBatch); _db.SetEntityStateModified(strand); _db.SaveChanges(); } }
public IHttpActionResult CreateStrandBatch([FromUri] int strandId, [FromBody] StrandBatchModel model) { if (ModelState.IsValid) { var strandBatch = new StrandBatch(model.RunId, model.Position); Mapper.Map(model, strandBatch); if (!_strandsService.IsStrandBatchExist(strandBatch)) { _strandsService.CreateStrandBatch(strandBatch); model.Id = strandBatch.Id; } else { model.SetError("BatchNumber", "Duplicate strand batch"); } } else { foreach (var message in ModelState) { model.SetError(message.Key, message.ToString()); } } return(Ok(model)); }
public void CreateStrandBatch(StrandBatch strandBatch) { var strandId = strandBatch.StrandId; var strand = _db.Strands.Find(strandId); if (strand != null && !IsStrandBatchExist(strandBatch)) { strand.Batches.Add(strandBatch); _db.SetEntityStateAdded(strandBatch); _db.SetEntityStateModified(strand); _db.SaveChanges(); } }
public IHttpActionResult SplitStrandBatch([FromUri] int strandId, [FromUri] int strandBatchId, [FromBody] ICollection <StrandBatchModel> model) { if (model == null) { return(BadRequest()); } var sourceBatch = _strandsService.GetStrandBatch(strandId, strandBatchId); if (sourceBatch == null) { return(BadRequest()); } var splittedBatches = new List <StrandBatch>(); foreach (var batchModel in model) { var strandBatch = new StrandBatch(batchModel.RunId, batchModel.Position); Mapper.Map(batchModel, strandBatch); if (!_strandsService.IsStrandBatchExist(strandBatch)) { splittedBatches.Add(strandBatch); } else { batchModel.SetError("BatchNumber", "Duplicate strand batch"); } } if (splittedBatches.Count == model.Count) { _strandsService.SplitStrandBatch(sourceBatch, splittedBatches); } return(Ok(model)); }
public void UpdateStrandBatch(StrandBatch strandBatch) { if (!IsStrandBatchExist(strandBatch)) { //var oldStrand = _db.Strands.Find(model.StrandId); //if (oldStrand != null) //{ // oldStrand.Batches.Remove(strandBatch); // _db.Entry(oldStrand).State = EntityState.Modified; //} //var newStrand = _db.Strands.Find(strandId); //if (newStrand != null) //{ // newStrand.Batches.Add(strandBatch); // _db.Entry(newStrand).State = EntityState.Modified; //} _db.SetEntityStateModified(strandBatch); _db.SaveChanges(); } }
public IHttpActionResult CombineStrandBatches([FromUri] int strandId, [FromBody] CombineStrandBatchesViewModel model) { if (ModelState.IsValid) { model.StrandBatch.StrandId = strandId; var strandBatch = new StrandBatch(model.StrandBatch.RunId, model.StrandBatch.Position); Mapper.Map(model.StrandBatch, strandBatch); if (!_strandsService.IsStrandBatchExist(strandBatch)) { var isCombined = _strandsService.CombineBatches(strandBatch, model.CombinedBatches); if (isCombined) { model.StrandBatch.Id = strandBatch.Id; } } else { model.StrandBatch.SetError("BatchNumber", "Duplicate strand batch"); } } return(Ok(model.StrandBatch)); }
public bool CombineBatches(StrandBatch strandBatch, IEnumerable <int> combinedBatches) { var strandId = strandBatch.StrandId; var strand = _db.Strands.Find(strandId); if (strand != null && !IsStrandBatchExist(strandBatch)) { var notesBuilder = new StringBuilder("Combined from batches: "); foreach (var batchId in combinedBatches) { var combinedBatch = GetStrandBatch(strandId, batchId); if (combinedBatch == null) { return(false); } notesBuilder.Append(string.Format("<{0}>, ", combinedBatch.BatchNumber)); combinedBatch.Notes = string.Format("Combined into batch <{0}> \n{1}", strandBatch.BatchNumber, combinedBatch.Notes); combinedBatch.MiscVolumeUsed = combinedBatch.PreparedVolume ?? 0; _db.SetEntityStateModified(combinedBatch); } strandBatch.Notes = notesBuilder.Remove(notesBuilder.Length - 2, 2) .Append(string.Format("\n{0}", strandBatch.Notes)) .ToString(); strand.Batches.Add(strandBatch); _db.SetEntityStateAdded(strandBatch); _db.SetEntityStateModified(strand); var result = _db.SaveChanges(); return(result > 0); } return(false); }
public bool IsStrandBatchExist(StrandBatch strandBatch) { return(_db.StrandBatches.Where(m => m.BatchNumber == strandBatch.BatchNumber && strandBatch.Id != m.Id) .ToList() .Any(m => m.BatchNumber == strandBatch.BatchNumber)); }