Друг похвастал какие чудеса он пишет в коде, на работе. Хороший пункт в тему того, почему у разработчика нельзя оставлять наедине с кодом, ему нужен хотя бы еще один в команду, чтобы попинывал и мотивировал.
Готов поиграть в игру: Кто сможет дать максимально подробное описание или комментарии к данному коду или переписать его максимально просто для человеческого прочтения? И сколько на это понадобится времени?
private List<BlankComposition> GetBlankInfo(SKDREntities db, Requisition inz, int deliveryType, long? languageId)
{
return db.RuleDescriptions
.Where(rd => rd.OrganizationId == inz.ReqUnit && rd.IsActive)
.ToList()
.Where(rd => rd.DeliveryTypes.Split(',').Select(int.Parse).Contains(deliveryType))
.DefaultIfEmpty()
.SelectMany(or => db.RuleDescriptions
.Where(rd => rd.OrganizationId == inz.RequisitionOrg.OrgID && rd.IsActive)
.ToList()
.Where(rd => rd.DeliveryTypes.Split(',').Select(int.Parse).Contains(deliveryType)).DefaultIfEmpty(), (org, lab) => new { org, lab })
.Select(rule => new[] { rule.org, rule.lab }.Where(r => r != null).ToList())
.Select(rule => new
{
HeadHeight = rule.Select(r => r.Composition.HeaderHeight).FirstOrDefault(hh => hh != null) ?? "3cm",
FooterHeight = rule.Select(r => r.Composition.FooterHeight).FirstOrDefault(fh => fh != null) ?? "4.5cm",
DemographyDescriptionId = rule.Select(r => r.DemographyDescriptionId).FirstOrDefault(),
Suffix = rule.Select(r => r.Suffix).FirstOrDefault(),
Elements = rule
.SelectMany(
re => re.Composition.CompositionElements,
(rd, element) => new { element, priority = rd == rule.First(), langPriority = element.LanguageId == languageId }
)
.GroupBy(g => g.element.ElementTypeId)
.SelectMany(g => g
.OrderByDescending(e => e.priority)
.ThenByDescending(e => e.langPriority)
.Take(1)
.Select(e => e.element)
)
.Where(e => e.ElementId != null)
.ToList()
}
).Select(item => new BlankComposition
{
HeaderHeight = item.HeadHeight,
FooterHeight = item.FooterHeight,
BlankElements = item.Elements.Select(e => new BlankElement
{
Width = e.Element.Width,
Height = e.Element.Height,
Left = e.Element.Left,
Top = e.Element.Top,
Image = e.Element.ImageId == null ? null : e.Element.Image.Data,
Text = e.Element.Text,
Placing = e.Placing
}).ToList(),
Demography = db.DemographyDescriptions
.Single(dd => dd.Id == item.DemographyDescriptionId)
.DemographyTables
.Select(dt => new DemographyInfo
{
Placing = dt.Placing,
Height = dt.Height,
Left = dt.Left,
Top = dt.Top,
Width = dt.Width,
Lines = DemographyFormatter.GetDemographyInfo(inz, dt.DemographyType.DemographyContents.OrderBy(o => o.SortOrder).ToList())
})
.ToList(),
Suffix = item.Suffix,
AddHyperlinks = item.Elements.Any(hy => hy.ElementTypeId == 6 && hy.ElementId != null)
}
).ToList();
}
Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.