private async Task SaveSignatures(OperationCardModel operationCardModel, IDbSession dbSession, int operationCardId) { var ids = (operationCardModel.Blocks ?? new List <OperationCardModel.Block>()).Select(x => x.LogPKID) .Concat((operationCardModel.Grindings ?? new List <OperationCardModel.Grinding>()).Select(x => x.LogPKID)) .Concat((operationCardModel.ISTs ?? new List <OperationCardModel.IST>()).Select(x => x.LogPKID)) .ToArray(); var existingIds = await dbSession.Set <OperationCardLogs>() .Where(x => ids.Contains(x.ID)) .Select(x => x.ID) .ToArrayAsync(); foreach (var item in operationCardModel.Blocks) { if (existingIds.Any(x => x == item.LogPKID)) { continue; } var operationCardLog = new OperationCardLogs() { ID = item.LogPKID, OperationCardID = operationCardId, Type = "Block", Content = item.Weight, LoggedError = null, Date = item.Date, OperatorID = item.Operator.ID }; dbSession.Set <OperationCardLogs>().Add(operationCardLog); } foreach (var item in operationCardModel.Grindings) { if (existingIds.Any(x => x == item.LogPKID)) { continue; } var operationCardLog = new OperationCardLogs() { ID = item.LogPKID, OperationCardID = operationCardId, Type = "Grinding", Content = item.GrindingTime.ToString(), LoggedError = item.Error, Date = item.Date, OperatorID = item.Operator.ID }; dbSession.Set <OperationCardLogs>().Add(operationCardLog); } foreach (var item in operationCardModel.ISTs) { if (existingIds.Any(x => x == item.LogPKID)) { continue; } var operationCardLog = new OperationCardLogs() { ID = item.LogPKID, OperationCardID = operationCardId, Type = "IST", Content = item.Ist, LoggedError = null, Date = item.Date, OperatorID = item.Operator.ID }; dbSession.Set <OperationCardLogs>().Add(operationCardLog); } }
private async Task SaveSubstances(OperationCardModel operationCardModel, IDbFacade dbFacade, IDbSession dbSession, OperationCard operationCard) { if (operationCardModel.Substances.Operator == null && operationCardModel.Substances.SubstanceList == null) { return; } if (operationCardModel.Substances.SubstanceList.Count == 0) { return; } var operationCardLogSubst = new OperationCardLogs() { ID = operationCardModel.Substances.LogPKID, OperationCardID = operationCard.ID, Type = "Substances", Content = null, LoggedError = null, Date = operationCardModel.Substances != null ? operationCardModel.Substances.Date : new DateTime(), OperatorID = operationCardModel.Substances != null ? operationCardModel.Substances.Operator.ID : -1 }; // Substance TimeStamp if (operationCardLogSubst.OperatorID != -1) { if (!await dbSession.Set <OperationCardLogs>().AnyAsync(u => u.ID == operationCardLogSubst.ID)) { dbSession.Set <OperationCardLogs>().Add(operationCardLogSubst); } else { var logEntry = await dbSession.Set <OperationCardLogs>().FirstOrDefaultAsync(u => u.ID == operationCardLogSubst.ID); logEntry.Date = operationCardModel.Substances.Date; logEntry.OperatorID = operationCardModel.Substances.Operator.ID; } } // Substances if (operationCardModel.Substances?.SubstanceList != null) { // Get Instruction Recipe Materials var instructionRecipeMaterials = new GetAllSubstances(dbFacade).Execute(operationCardModel.HeatNumber); // Get Instruction var instruction = dbSession.Set <Instruction>() .Include(x => x.Materials) .Where(x => x.ID == operationCard.InstructionID) .FirstOrDefault(); foreach (var item in operationCardModel.Substances?.SubstanceList.Where(x => x.Weight > 0)) { // Add or Update to the newest Amounts if (instruction.Materials.Any(y => y.MaterialID == item.Subst.ID)) { instruction.Materials.FirstOrDefault(y => y.MaterialID == item.Subst.ID).Amount = item.Weight; } else { instruction.Materials.Add(new InstructionMaterial() { InstructionID = instruction.ID, MaterialID = item.Subst.ID, Amount = item.Weight }); } } } }