| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using Comal.Classes;
 
- using InABox.Core;
 
- namespace Comal.Stores
 
- {
 
-     public class ManufacturingHistoryStore : BaseStore<ManufacturingHistory>
 
-     {
 
-         //private void ProcessHistory(params ManufacturingHistory[] entities)
 
-         //{
 
-         //    TimeSpan start = TimeSpan.FromMinutes(Math.Floor(entity.Created.TimeOfDay.Subtract(entity.Window).TotalMinutes / 15.0F) * 15.0F);
 
-         //    TimeSpan finish = start.Add(new TimeSpan(0, 15, 0)); 
 
-         //}
 
-         protected override void BeforeSave(ManufacturingHistory entity)
 
-         {
 
-             base.BeforeSave(entity);
 
-             var start = TimeSpan.FromMinutes(Math.Floor(entity.Created.TimeOfDay.Subtract(entity.Window).TotalMinutes / 15.0F) * 15.0F);
 
-             var finish = start.Add(new TimeSpan(0, 15, 0));
 
-             var sDescription = entity.LostTime.IsValid() ? entity.Description : "Manufacturing Time";
 
-             var ass = Provider.Query(
 
-                 new Filter<Assignment>(x => x.EmployeeLink.ID).IsEqualTo(entity.Employee.ID)
 
-                     .And(x => x.Date).IsEqualTo(entity.Date)
 
-                     .And(x => x.Actual.Finish).IsGreaterThanOrEqualTo(start)
 
-                     .And(x => x.Actual.Finish).IsLessThanOrEqualTo(finish)
 
-                     //.And(x=>x.Description).BeginsWith(sDescription)
 
-                     .And(x => x.ActivityLink.ID).IsEqualTo(entity.Activity.ID),
 
-                 new Columns<Assignment>(
 
-                     x => x.ID,
 
-                     x => x.Description,
 
-                     x => x.Actual.Finish
 
-                 ),
 
-                 new SortOrder<Assignment>(x => x.Actual.Finish, SortDirection.Descending)
 
-             ).Rows.Where(r => r.Get<Assignment, string>(c => c.Description).StartsWith(sDescription)).FirstOrDefault()?.ToObject<Assignment>();
 
-             if (ass == null)
 
-             {
 
-                 ass = new Assignment { Date = entity.Date };
 
-                 ass.EmployeeLink.ID = entity.Employee.ID;
 
-                 ass.Actual.Start = start;
 
-                 ass.Description = sDescription;
 
-                 ass.ActivityLink.ID = entity.Activity.ID;
 
-             }
 
-             if (!entity.LostTime.IsValid())
 
-             {
 
-                 var bFound = false;
 
-                 var summary = new List<string>();
 
-                 var lines = ass.Description.Split('\n').ToList();
 
-                 foreach (var line in lines)
 
-                     if (line.Length > 8)
 
-                     {
 
-                         // Assumes a line format for [Serial] : HH:mm
 
-                         var ser = line.Substring(0, line.Length - 8);
 
-                         if (ser.Equals(entity.Description))
 
-                         {
 
-                             bFound = true;
 
-                             var sTime = line.Substring(line.Length - 5, 5);
 
-                             var tTime = TimeSpan.Parse(sTime) + entity.QADuration + entity.WorkDuration;
 
-                             summary.Add(string.Format("{0} : {1}", entity.Description, tTime.ToString(@"hh\:mm")));
 
-                         }
 
-                         else
 
-                         {
 
-                             summary.Add(line);
 
-                         }
 
-                     }
 
-                     else
 
-                     {
 
-                         summary.Add(line);
 
-                     }
 
-                 if (!bFound)
 
-                     summary.Add(string.Format("{0} : {1}", entity.Description, (entity.QADuration + entity.WorkDuration).ToString(@"hh\:mm")));
 
-                 ass.Description = string.Join("\n", summary);
 
-             }
 
-             ass.Actual.Finish = finish;
 
-             if (ass.IsChanged())
 
-                 Provider.Save(ass);
 
-             var row = Provider.Query(
 
-                 new Filter<ManufacturingHistory>(x => x.Employee.ID).IsEqualTo(entity.Employee.ID)
 
-                     .And(x => x.Packet.ID).IsEqualTo(entity.LostTime.ID)
 
-                     .And(x => x.Packet.ID).IsEqualTo(entity.Packet.ID)
 
-                     .And(x => x.Section.ID).IsEqualTo(entity.Section.ID)
 
-                     .And(x => x.Station).IsEqualTo(entity.Station)
 
-                     .And(x => x.Date).IsEqualTo(entity.Date),
 
-                 new Columns<ManufacturingHistory>(
 
-                     x => x.ID,
 
-                     x => x.QADuration,
 
-                     x => x.QACompleted,
 
-                     x => x.WorkDuration,
 
-                     x => x.WorkCompleted,
 
-                     x => x.Breakdown
 
-                 )
 
-             ).Rows.FirstOrDefault();
 
-             if (row != null)
 
-             {
 
-                 var history = row.ToObject<ManufacturingHistory>();
 
-                 history.QADuration += entity.QADuration;
 
-                 history.QACompleted += entity.QACompleted;
 
-                 history.WorkDuration += entity.WorkDuration;
 
-                 history.WorkCompleted += entity.WorkCompleted;
 
-                 UpdateBreakdown(history, entity.Created, entity.QADuration + entity.WorkDuration);
 
-                 Provider.Save(history);
 
-             }
 
-             else
 
-             {
 
-                 UpdateBreakdown(entity, entity.Created, entity.QADuration + entity.WorkDuration);
 
-                 Provider.Save(entity);
 
-             }
 
-         }
 
-         private void UpdateBreakdown(ManufacturingHistory entity, DateTime date, TimeSpan timeSpan)
 
-         {
 
-             var breakdown = new Dictionary<string, TimeSpan>();
 
-             if (!string.IsNullOrEmpty(entity.Breakdown))
 
-                 breakdown = Serialization.Deserialize<Dictionary<string, TimeSpan>>(entity.Breakdown);
 
-             var slot = TimeSpan.FromMinutes(Math.Ceiling((date - date.Date).TotalMinutes / 15.0F) * 15.0F);
 
-             var key = slot.ToString(@"hh\:mm");
 
-             if (breakdown.ContainsKey(key))
 
-                 breakdown[key] = breakdown[key] + timeSpan;
 
-             else
 
-                 breakdown[key] = timeSpan;
 
-             entity.Breakdown = Serialization.Serialize(breakdown);
 
-         }
 
-         protected override void OnSave(ManufacturingHistory entity, ref string auditnote)
 
-         {
 
-             // Consolidated Saving happend in BeforeSave - nothing to see here
 
-             //base.OnSave(entity);
 
-         }
 
-         protected override void OnSave(IEnumerable<ManufacturingHistory> entities, ref string auditnote)
 
-         {
 
-             //base.OnSave(entities);
 
-         }
 
-     }
 
- }
 
 
  |