public TechProcessVersionModel Get(int parentId, string node) { try { using (var _db = new IEDEntities()) { TechProcessVersionModel techVersion = null; techVersion = _db.T_TechProcessVersion.Where(x => !x.IsDeleted && x.ParentId == parentId).Select(x => new TechProcessVersionModel() { Id = x.Id, ProductId = x.ProductId, ProductName = x.T_Product.Name, TimeCompletePerCommo = x.TimeCompletePerCommo, NumberOfWorkers = x.NumberOfWorkers, WorkingTimePerDay = x.WorkingTimePerDay, PacedProduction = x.PacedProduction, ProOfGroupPerDay = x.ProOfGroupPerDay, ProOfGroupPerHour = x.ProOfGroupPerHour, ProOfPersonPerDay = x.ProOfPersonPerDay, //WorkshopId = x.WorkshopId, //WorkShopName = x.T_WorkShop.Name, Note = x.Note, Quantities = 0, Price = 0, PricePerSecond = x.PricePerSecond, Allowance = x.Allowance, }).FirstOrDefault(); if (techVersion != null) { #region var details = (from x in _db.T_TechProcessVersionDetail where !x.T_CA_Phase.IsDeleted && x.TechProcessVersionId == techVersion.Id select new TechProcessVerDetailModel() { Id = x.Id, TechProcessVersionId = x.TechProcessVersionId, PhaseGroupId = x.T_CA_Phase.T_PhaseGroup.Id, CA_PhaseId = x.CA_PhaseId, PhaseCode = x.T_CA_Phase.Code, PhaseName = x.T_CA_Phase.Name, // StandardTMU = Math.Round(x.StandardTMU, 3), StandardTMU = Math.Round(x.T_CA_Phase.TotalTMU, 3), Percent = x.Percent, EquipmentId = x.T_CA_Phase.EquipmentId != null ? x.T_CA_Phase.EquipmentId ?? 0 : 0, EquipmentCode = x.T_CA_Phase.EquipmentId != null ? x.T_CA_Phase.T_Equipment.Code : "", EquipmentName = x.T_CA_Phase.EquipmentId != null ? x.T_CA_Phase.T_Equipment.Name : "", EquipmentGroupCode = x.T_CA_Phase.EquipmentId.HasValue ? x.T_CA_Phase.T_Equipment.T_EquipmentGroup.GroupCode : "", TimeByPercent = Math.Round(x.TimeByPercent, 3), Worker = x.Worker, De_Percent = 0, Description = x.Description == null ? "" : x.Description, Coefficient = x.T_CA_Phase.SWorkerLevel.Coefficient, WorkerLevelId = x.T_CA_Phase.WorkerLevelId, WorkerLevelName = x.T_CA_Phase.SWorkerLevel.Name, Index = x.T_CA_Phase.Index }).OrderBy(x => x.Index).ThenBy(x => x.PhaseCode).ToList(); techVersion.details = details; var listEquipmentId = details.Where(c => c.EquipmentId > 0).Select(c => c.EquipmentId).Distinct().ToList(); if (listEquipmentId.Count > 0) { techVersion.equipments = new List <ModelEquipment>(); foreach (var equipmentId in listEquipmentId) { var equipments = details.Where(c => c.EquipmentId == equipmentId).Select(c => new ModelEquipment() { Id = c.EquipmentId.Value, Name = c.EquipmentName, Code = c.EquipmentCode }).ToList(); if (equipments.Count > 0) { var equipmentFirst = equipments[0]; equipmentFirst.QuantityUse = equipments.Count; techVersion.equipments.Add(equipmentFirst); } } } var phaseIds = details.Select(x => x.CA_PhaseId).Distinct().ToList(); if (phaseIds != null && phaseIds.Count > 0) { var timePrepares = _db.T_CA_Phase_TimePrepare.Where(x => !x.IsDeleted && phaseIds.Contains(x.Commo_Ana_PhaseId)).Select(x => new Commo_Ana_Phase_TimePrepareModel() { Id = x.Id, Commo_Ana_PhaseId = x.Commo_Ana_PhaseId, TMUNumber = x.T_TimePrepare.TMUNumber }).ToList(); if (timePrepares != null && timePrepares.Count > 0) { double tmu = 0, time = 0; var cfObj = _db.T_IEDConfig.FirstOrDefault(x => !x.IsDeleted && x.Name.Trim().ToUpper().Equals(eIEDConfigName.TMU.Trim().ToUpper())); if (cfObj != null && !string.IsNullOrEmpty(cfObj.Value)) { double.TryParse(cfObj.Value, out tmu); } foreach (var item in details) { time = timePrepares.Where(x => x.Commo_Ana_PhaseId == item.CA_PhaseId).Sum(x => x.TMUNumber); item.TimePrepare = time > 0 ? time / tmu : 0; } } } if (!string.IsNullOrEmpty(node)) { techVersion.details.AddRange(_db.T_CA_Phase.Where(x => !x.IsDeleted && x.Node.Contains(node) && !phaseIds.Contains(x.Id)).Select(x => new TechProcessVerDetailModel() { Id = 0, TechProcessVersionId = 0, PhaseGroupId = x.T_PhaseGroup.Id, CA_PhaseId = x.Id, PhaseCode = x.Code, Index = x.Index, PhaseName = x.Name, StandardTMU = Math.Round(x.TotalTMU, 3), EquipmentId = x.EquipmentId != null ? x.EquipmentId ?? 0 : 0, EquipmentCode = x.EquipmentId != null ? x.T_Equipment.Code : "", EquipmentName = x.EquipmentId != null ? x.T_Equipment.Name : "", EquipmentGroupCode = x.EquipmentId.HasValue ? x.T_Equipment.T_EquipmentGroup.GroupCode : "", Description = x.Description == null ? "" : x.Description, }).OrderBy(x => x.Index).ThenBy(x => x.PhaseCode).ToList()); } #endregion } else { techVersion = new TechProcessVersionModel(); techVersion.details.AddRange(_db.T_CA_Phase.Where(x => !x.IsDeleted && x.Node.Contains(node)).Select(x => new TechProcessVerDetailModel() { Id = 0, TechProcessVersionId = 0, PhaseGroupId = x.T_PhaseGroup.Id, CA_PhaseId = x.Id, PhaseCode = x.Code, Index = x.Index, PhaseName = x.Name, StandardTMU = Math.Round(x.TotalTMU, 3), EquipmentId = x.EquipmentId != null ? x.EquipmentId ?? 0 : 0, EquipmentCode = x.EquipmentId != null ? x.T_Equipment.Code : "", EquipmentName = x.EquipmentId != null ? x.T_Equipment.Name : "", EquipmentGroupCode = x.EquipmentId.HasValue ? x.T_Equipment.T_EquipmentGroup.GroupCode : "", Description = x.Description == null ? "" : x.Description, }).OrderBy(x => x.Index).ThenBy(x => x.PhaseCode).ToList()); } return(techVersion); } } catch (Exception ex) { throw ex; } }
public ResponseBase InsertOrUpdate(TechProcessVersionModel model) { try { using (db = new IEDEntities()) { var result = new ResponseBase(); T_TechProcessVersion version = null; T_TechProcessVersionDetail verDetail = null; model.Id = 0; if (model.Id == 0) { version = new T_TechProcessVersion(); Parse.CopyObject(model, ref version); version.CreatedDate = DateTime.Now; version.CreatedUser = model.ActionUser; if (model.details != null && model.details.Count > 0) { version.T_TechProcessVersionDetail = new Collection <T_TechProcessVersionDetail>(); foreach (var item in model.details) { verDetail = new T_TechProcessVersionDetail(); Parse.CopyObject(item, ref verDetail); verDetail.T_TechProcessVersion = version; verDetail.CreatedDate = version.CreatedDate; verDetail.CreatedUser = version.CreatedUser; version.T_TechProcessVersionDetail.Add(verDetail); } } string query = "update T_TechProcessVersion set IsDeleted = 1 WHERE ParentId =" + version.ParentId; db.Database.ExecuteSqlCommand(query); db.T_TechProcessVersion.Add(version); } else { #region Update version = db.T_TechProcessVersion.FirstOrDefault(x => !x.IsDeleted && x.Id == model.Id); if (version == null) { result.IsSuccess = false; result.Errors.Add(new Error() { MemberName = "Update", Message = "Dữ liệu bạn đang thao tác đã bị xóa hoặc không tồn tại. Vui lòng kiểm tra lại !." }); return(result); } else { version.NumberOfWorkers = model.NumberOfWorkers; version.WorkingTimePerDay = model.WorkingTimePerDay; version.PacedProduction = model.PacedProduction; version.TimeCompletePerCommo = model.TimeCompletePerCommo; version.ProOfGroupPerDay = model.ProOfGroupPerDay; version.ProOfGroupPerHour = model.ProOfGroupPerHour; version.ProOfPersonPerDay = model.ProOfPersonPerDay; version.Note = model.Note; version.UpdatedUser = model.ActionUser; version.UpdatedDate = DateTime.Now; version.PricePerSecond = model.PricePerSecond; version.Allowance = model.Allowance; var details = db.T_TechProcessVersionDetail.Where(x => !x.IsDeleted && x.TechProcessVersionId == model.Id).OrderBy(x => x.Id).ToList(); if (details.Count > 0) { model.details = model.details.OrderBy(x => x.Id).ToList(); for (int i = 0; i < details.Count(); i++) { details[i].Percent = model.details[i].Percent; details[i].TimeByPercent = model.details[i].TimeByPercent; details[i].Worker = model.details[i].Worker; details[i].Description = model.details[i].Description; details[i].UpdatedUser = model.ActionUser; details[i].UpdatedDate = DateTime.Now; } } } #endregion } db.SaveChanges(); result.Data = version.Id; result.IsSuccess = true; return(result); } } catch (Exception ex) { throw ex; } }