public async Task <IActionResult> PutTodoItem(int?id, DescriptionKeyGroup item) { if (id != item.DescriptionKeyGroupId) { return(BadRequest()); } _detContext.Entry(item).State = EntityState.Modified; await _detContext.SaveChangesAsync(); return(NoContent()); }
private int?GetDescKeyGroupIdByName(string descKeyGroupName, int?superDescKeyGroupid = null) { DescriptionKeyGroup dkg = null; if (superDescKeyGroupid != null) { dkg = _context.DescriptionKeyGroup.Where(dkg => dkg.KeyGroupName == descKeyGroupName && dkg.ParentDescriptionKeyGroupId == superDescKeyGroupid).FirstOrDefault(); } else { dkg = _context.DescriptionKeyGroup.Where(dkg => dkg.KeyGroupName == descKeyGroupName).FirstOrDefault(); } if (dkg != null) { return(dkg.DescriptionKeyGroupId); } return(null); }
/** TODO: Relation Kopf - Unterseite? **/ private void ImportDescKeyGroups() { //Skip Header Row and empty Row //First get "Region" KeyGroups for (int i = 3; i <= worksheetCharacteristics.Dimension.Rows; i++) { //Parse Region Col var cellVal = worksheetCharacteristics.Cells[i, _regionColIndexExcel].Value; if (cellVal != null) { //TODO: switch back when clarified how to import desckeygroups var keyGroupName = cellVal.ToString().Trim(); //var keyGroupName = ConcatKeyGroupName(i); if (!DescKeyGroupNameExists(keyGroupName)) { string keyGroupDataType = null; if (isRegionOnlyKeyGroup(i)) { keyGroupDataType = GetDescKeyGroupDataType(i); } DescriptionKeyGroup descriptionKeyGroup = new DescriptionKeyGroup { KeyGroupName = keyGroupName, DescriptionKeyGroupDataType = keyGroupDataType, VisibilityCategoryId = _MapAmpelType(i) }; _context.Add(descriptionKeyGroup); SaveToContext(); descKeyGroupCounter++; } } } //Lage -> Region Logger.Info("-- Started Lage-Region Import"); ParseAndSaveExcelColumn(_lageColIndexExcel, _regionColIndexExcel, false); Logger.Info("-- Finished Lage-Region Import"); //Merkmale -> Lage Logger.Info("-- Started DescKeyGroups Merkmal-Lage Import"); ParseAndSaveExcelColumn(_merkmaleColIndexExcel, _lageColIndexExcel, true); Logger.Info("-- Finished DescKeyGroups: Merkmal-Lage Import"); }
private void SaveDKGWithParent(string keyGroupName, int?supKeyGroupId, int?supSupKeyGroupId, string supKeyGroupName, bool isMerkmaleRow, int i, int currentKeyGroupRow, string?keyGroupDataType) { if (!SupDescKeyGroupNameExists(keyGroupName, supKeyGroupId, supSupKeyGroupId)) { DescriptionKeyGroup descriptionKeyGroup = null; //eg "Oberseite;Unterseite" descriptionKeyGroup = new DescriptionKeyGroup { KeyGroupName = keyGroupName, ParentDescriptionKeyGroupId = supKeyGroupId, DescriptionKeyGroupDataType = isMerkmaleRow ? keyGroupDataType : null, VisibilityCategoryId = _MapAmpelType(i), OrderPriority = _GetOrderPriority(i) }; _context.Add(descriptionKeyGroup); Logger.Debug("--- Saving DescKeyGroup \'" + keyGroupName + "\' with ParentDescKeyGroup \'" + supKeyGroupName + "\' to Context ..."); SaveToContext(); //Save merkmale keyGroupId to row for reference when parsing untermerkmale if (isMerkmaleRow) { _keyGroupToExcelRowMapping[i] = descriptionKeyGroup.DescriptionKeyGroupId; //Check if DataType = Value (Zahlenfeld) AND no DescriptionKey DataCell below --> Create DescKey with same name (eg. Einzelaugen: Anzahl Augen) if (worksheetCharacteristics.Cells[i, _typColIndexExcel].Value?.ToString().Trim() == "Zahlenfeld" && worksheetCharacteristics.Cells[i + 1, currentKeyGroupRow].Value == null) { try { SaveDescriptionKey(descriptionKeyGroup.KeyGroupName, descriptionKeyGroup.KeyGroupName, descriptionKeyGroup.DescriptionKeyGroupId, i); } catch (Exception e) { Logger.Error("--- Error saving \'" + keyGroupName + "\' with ParentDescKeyGroup \'" + supKeyGroupName + "\'"); Logger.Error(e); } } } descKeyGroupCounter++; } else { Logger.Debug("--- Did not add KeyGroup: \'" + keyGroupName + "\' With ParentKeyGroup: \'" + supKeyGroupName + "\'"); Logger.Debug("--- Entity already exists."); } //TODO: clarify - save Lage-Key groups without Region Key Groups as top-level keyGroups? }
public void ParseAndSaveExcelColumn(int currentKeyGroupRow, int superiorKeyGroupRow, bool isMerkmaleRow) { for (int i = 3; i <= worksheetCharacteristics.Dimension.Rows; i++) { //Parse Region Col var cellVal = worksheetCharacteristics.Cells[i, currentKeyGroupRow].Value; //Empty row above -> new DescKeyGroup --> ignore desckeys in merkmale-row if (cellVal != null && worksheetCharacteristics.Cells[i - 1, currentKeyGroupRow].Value == null) { var keyGroupName = worksheetCharacteristics.Cells[i, currentKeyGroupRow].Value.ToString().Trim(); //Type has to be set only on merkmale level? var keyGroupDataType = isMerkmaleRow ? GetDescKeyGroupDataType(i) : null; //Männchen;Weibchen --> moved to TaxDescr //var keyGroupType = isMerkmaleRow && _mwColExists ? GetDescKeyGroupMWType(i) : null; //Parent KeyGroup? var supKeyGroupVal = worksheetCharacteristics.Cells[i, superiorKeyGroupRow].Value; //If Lage empty -> get Value from Region Column and reference it //cf. Row 40 "Antenne: Anzahl Antennenglieder if (isMerkmaleRow && supKeyGroupVal == null) { //supKeyGroupVal = worksheetCharacteristics.Cells[i, _regionColIndexExcel].Value; } int?supSupKeyGroupId = null; //Merkmal -> Lage if (supKeyGroupVal != null) { string supKeyGroupName = supKeyGroupVal.ToString().Trim(); if (supKeyGroupName == "Bundesland") { keyGroupName = _mapBundeslandRealName(keyGroupName); } //Problem: Unterseite -> Körperende || Unterseite -> Kopf //check first column desckeygroup if (isMerkmaleRow) { var supSupKeyGroupName = worksheetCharacteristics.Cells[i, _regionColIndexExcel].Value?.ToString().Trim(); supSupKeyGroupId = GetDescKeyGroupIdByName(supSupKeyGroupName).GetValueOrDefault(); } int?supKeyGroupId = null; supKeyGroupId = GetDescKeyGroupIdByName(supKeyGroupName.ToString().Trim(), supSupKeyGroupId).GetValueOrDefault(); SaveDKGWithParent(keyGroupName, supKeyGroupId, supSupKeyGroupId, supKeyGroupName, isMerkmaleRow, i, currentKeyGroupRow, keyGroupDataType); } //Lage empty, check Region and relate merkmal directly to Region else if (worksheetCharacteristics.Cells[i, _regionColIndexExcel].Value != null) { //tbd string supKeyGroupName = worksheetCharacteristics.Cells[i, _regionColIndexExcel].Value.ToString().Trim(); var supKeyGroupId = GetDescKeyGroupIdByName(supKeyGroupName); if (!SupDescKeyGroupNameExists(keyGroupName, supKeyGroupId)) { DescriptionKeyGroup descriptionKeyGroup = new DescriptionKeyGroup { KeyGroupName = keyGroupName, ParentDescriptionKeyGroupId = supKeyGroupId, DescriptionKeyGroupDataType = keyGroupDataType, VisibilityCategoryId = _MapAmpelType(i), OrderPriority = _GetOrderPriority(i) }; _context.Add(descriptionKeyGroup); SaveToContext(); Logger.Debug("--- Added DescKeyGroup \'" + keyGroupName + "\' With ParentKeyGroup: \'" + supKeyGroupName); //Save merkmale keyGroupId to row for reference when parsing untermerkmale if (isMerkmaleRow) { _keyGroupToExcelRowMapping[i] = descriptionKeyGroup.DescriptionKeyGroupId; if (worksheetCharacteristics.Cells[i, _typColIndexExcel].Value?.ToString().Trim() == "Zahlenfeld" && worksheetCharacteristics.Cells[i + 1, currentKeyGroupRow].Value == null) { SaveDescriptionKey(descriptionKeyGroup.KeyGroupName, descriptionKeyGroup.KeyGroupName, descriptionKeyGroup.DescriptionKeyGroupId, i); } } descKeyGroupCounter++; } else { Logger.Debug("--- Did not add DescKeyGroup \'" + keyGroupName + "\' With ParentKeyGroup: \'" + supKeyGroupName); Logger.Debug("--- Entity already exists"); } } //merkmal as keygroup without Lage nor Region else { DescriptionKeyGroup descriptionKeyGroup = new DescriptionKeyGroup { KeyGroupName = keyGroupName, DescriptionKeyGroupDataType = keyGroupDataType, VisibilityCategoryId = _MapAmpelType(i), OrderPriority = _GetOrderPriority(i) }; _context.Add(descriptionKeyGroup); SaveToContext(); Logger.Debug("--- Added DescKeyGroup \'" + keyGroupName + " with no ParentKeyGroup"); //Save merkmale keyGroupId to row for reference when parsing untermerkmale if (isMerkmaleRow) { _keyGroupToExcelRowMapping[i] = descriptionKeyGroup.DescriptionKeyGroupId; if (worksheetCharacteristics.Cells[i, _typColIndexExcel].Value?.ToString().Trim() == "Zahlenfeld" && worksheetCharacteristics.Cells[i + 1, currentKeyGroupRow].Value == null) { SaveDescriptionKey(descriptionKeyGroup.KeyGroupName, descriptionKeyGroup.KeyGroupName, descriptionKeyGroup.DescriptionKeyGroupId, i); } } descKeyGroupCounter++; } } } }
public async Task <ActionResult <DescriptionKeyGroup> > PostDescriptionKeyGroupItem(DescriptionKeyGroup item) { try { _detContext.DescriptionKeyGroup.Add(item); await _detContext.SaveChangesAsync(); return(CreatedAtAction(nameof(GetDescriptionKeyGroupItem), new { id = item.DescriptionKeyGroupId }, item)); } catch (System.Exception e) { var exp = e; } return(null); }
private int?GetDescKeyGroupIdFromKeyGroupList(List <string> descKeyGroupList) { List <DescriptionKeyGroup> descKeyGroup = null; if (descKeyGroupList != null) { if (descKeyGroupList.Count == 1) { descKeyGroup = _contextDet.DescriptionKeyGroup .Where(dkg => dkg.KeyGroupName == descKeyGroupList[0]) .ToList(); //TODO: clarify what to do when more than 1 result but excel only 1 desckeygroup element? if (descKeyGroup != null) { if (descKeyGroup.Count == 0) { Logger.Debug("--- Could not find DescKeyGroupId [{0}]", string.Join(", ", descKeyGroupList)); } else if (descKeyGroup.Count == 1) { return(descKeyGroup.FirstOrDefault().DescriptionKeyGroupId); } else { Logger.Debug("--- Could not determine DescKeyGroupId for combination: [{0}]", string.Join(", ", descKeyGroupList)); } } } else if (descKeyGroupList.Count == 2) { descKeyGroup = _contextDet.DescriptionKeyGroup .Where(dkg => dkg.KeyGroupName == descKeyGroupList[0]) .Include(dkg => dkg.ParentDescriptionKeyGroup).ToList(); if (descKeyGroup != null) { if (descKeyGroup.Count == 0) { Logger.Debug("--- Could not find DescKeyGroupId [{0}]", string.Join(", ", descKeyGroupList)); } else if (descKeyGroup.Count == 1) { return(descKeyGroup.First().DescriptionKeyGroupId); } else { DescriptionKeyGroup descKeyGroupParentFilter = descKeyGroup.Where(dkg => dkg.ParentDescriptionKeyGroup.KeyGroupName == descKeyGroupList[1]).FirstOrDefault(); if (descKeyGroupParentFilter != null) { return(descKeyGroupParentFilter.DescriptionKeyGroupId); } } } } else if (descKeyGroupList.Count == 3) { if (descKeyGroupList[1].Contains(";")) { var descKeyArr = descKeyGroupList[1].Split(";"); foreach (string dkName in descKeyArr) { } } descKeyGroup = _contextDet.DescriptionKeyGroup .Where(dkg => dkg.KeyGroupName == descKeyGroupList[0]) .Include(dkg => dkg.ParentDescriptionKeyGroup) .ThenInclude(dkgp => dkgp.ParentDescriptionKeyGroup) .ToList(); if (descKeyGroup != null) { if (descKeyGroup.Count == 0) { Logger.Debug("--- Could not find DescKeyGroupId [{0}]", string.Join(", ", descKeyGroupList)); return(null); } else if (descKeyGroup.Count == 1) { return(descKeyGroup.FirstOrDefault().DescriptionKeyGroupId); } else { try { //descKeyGroup.RemoveAll(dkg => dkg.ParentDescriptionKeyGroup == null); List <DescriptionKeyGroup> descKeyGroupParentFilterList = descKeyGroup .Where(dkg => dkg.ParentDescriptionKeyGroup?.KeyGroupName == descKeyGroupList[1]) .ToList(); if (descKeyGroupParentFilterList != null) { if (descKeyGroupParentFilterList.Count == 0) { Logger.Debug("--- Could not find DescKeyGroupId [{0}]", string.Join(", ", descKeyGroupList)); return(null); } else if (descKeyGroupParentFilterList.Count == 1) { return(descKeyGroupParentFilterList.FirstOrDefault().DescriptionKeyGroupId); } else { var descKeyGroupGrandParentFilterList = descKeyGroupParentFilterList.Where(dkgp => dkgp.ParentDescriptionKeyGroup.KeyGroupName == descKeyGroupList[2]).FirstOrDefault(); Logger.Debug("--- Could not find DescKeyGroupId [{0}]", string.Join(", ", descKeyGroupList)); return(null); } } } catch (Exception e) { Logger.Error(e, $"Error Getting Parent DKG Info for DKG {descKeyGroup.FirstOrDefault().KeyGroupName}"); } } } } } return(null); }