public string MigrateLoadGroupLinkFromCourtType(int fromCourtType, int fromInstance, int toCourtType, int toInstance, int[] caseGroups) { var enabledCodes = repo.AllReadonly <CaseTypeCode>() .Include(x => x.CaseType) .Where(x => caseGroups.Contains(x.CaseType.CaseGroupId)) .Select(x => x.CaseCodeId) .ToArray(); var savedLinks = repo.AllReadonly <LoadGroupLink>() .Include(x => x.GroupCodes) .Where(x => x.CourtTypeId == fromCourtType && x.CaseInstanceId == fromInstance) .Where(x => x.GroupCodes.Where(c => enabledCodes.Contains(c.CaseCodeId)).Any()) .ToList(); int i = 0; foreach (var link in savedLinks) { var newLink = new LoadGroupLink() { LoadGroupId = link.LoadGroupId, CourtTypeId = toCourtType, CaseInstanceId = toInstance, LoadIndex = link.LoadIndex, GroupCodes = new HashSet <LoadGroupLinkCode>() }; if (link.GroupCodes != null) { foreach (var code in link.GroupCodes.Where(x => enabledCodes.Contains(x.CaseCodeId))) { var newLinkCode = new LoadGroupLinkCode() { CaseCodeId = code.CaseCodeId }; newLink.GroupCodes.Add(newLinkCode); } } var savedLinkItem = repo.AllReadonly <LoadGroupLink>(). Where(x => x.LoadGroupId == newLink.LoadGroupId && x.CourtTypeId == newLink.CourtTypeId && x.CaseInstanceId == newLink.CaseInstanceId).FirstOrDefault(); if (savedLinkItem != null) { } else { repo.Add(newLink); repo.SaveChanges(); i++; } } return($"Копирани {i} от {savedLinks.Count} броя връзки към групи по натовареност"); }
public bool LoadGroupLink_SaveData(LoadGroupLink model, List <int> caseCodes, ref string errorMessgae) { try { model.CaseInstanceId = (model.CaseInstanceId ?? 0) <= 0 ? null : model.CaseInstanceId; var linkExist = repo.AllReadonly <LoadGroupLink>().Where(x => x.Id != model.Id && x.LoadGroupId == model.LoadGroupId && x.CourtTypeId == model.CourtTypeId && (x.CaseInstanceId ?? 0) == (model.CaseInstanceId ?? 0)).Any(); if (linkExist == true) { errorMessgae = "За тази Група/Вид съд/Инстанция вече има въведен процент"; return(false); } if (model.Id > 0) { //Update var saved = repo.GetById <LoadGroupLink>(model.Id); saved.CourtTypeId = model.CourtTypeId; saved.CaseInstanceId = model.CaseInstanceId; saved.LoadIndex = model.LoadIndex; repo.Update(saved); //Взима всичко за това ид и го трие var loadGroupLinkCode = repo.AllReadonly <LoadGroupLinkCode>().Where(a => a.LoadGroupLinkId == model.Id).ToList(); foreach (var item in loadGroupLinkCode) { repo.Delete <LoadGroupLinkCode>(item); } } else { //Insert repo.Add <LoadGroupLink>(model); } //записва листа със кодовете за loadgrouplinkid foreach (var code in caseCodes) { LoadGroupLinkCode newLoadLinkCode = new LoadGroupLinkCode(); newLoadLinkCode.LoadGroupLinkId = model.Id; newLoadLinkCode.CaseCodeId = code; repo.Add <LoadGroupLinkCode>(newLoadLinkCode); } repo.SaveChanges(); return(true); } catch (Exception ex) { logger.LogError(ex, $"Грешка при запис на LoadGroupLink Id={ model.Id }"); return(false); } }
private bool migrate_LoadGroup(MigrationData item) { try { var data = item.Data.Split('$'); var groupModel = new LoadGroup() { Code = data[0], Label = data[1], DateStart = DefaultDateFrom, IsActive = true, Description = "migrated", LoadGroupLinks = new HashSet <LoadGroupLink>() }; var linkModel = new LoadGroupLink() { CourtTypeId = int.Parse(data[2]), CaseInstanceId = int.Parse(data[3]), LoadIndex = decimal.Parse(data[4].Replace(",", System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)), GroupCodes = new HashSet <LoadGroupLinkCode>() }; var codeModel = new LoadGroupLinkCode() { CaseCodeId = int.Parse(data[5]) }; linkModel.GroupCodes.Add(codeModel); groupModel.LoadGroupLinks.Add(linkModel); repo.Add(groupModel); repo.SaveChanges(); return(true); } catch (Exception ex) { item.Message = ex.Message; return(false); } }