Exemple #1
0
        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();
            }
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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();
            }
        }
Exemple #4
0
        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));
        }
Exemple #5
0
        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();
            }
        }
Exemple #6
0
        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));
        }
Exemple #7
0
        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);
        }
Exemple #8
0
 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));
 }