private List <UserRepetitionIntervalItem> ConvertToItems(long sourceLanguageId, long translationLanguageId, IEnumerable <Tuple <UserKnowledge, UserRepetitionInterval> > joinedData, DateTime unknownNextTimeToShow) { var userKnowledges = new List <UserKnowledge>(); var repetitionsByItemIds = new Dictionary <long, UserRepetitionInterval>(); foreach (var joinedRow in joinedData) { UserKnowledge uk = joinedRow.Item1; UserRepetitionInterval uri = joinedRow.Item2; userKnowledges.Add(uk); repetitionsByItemIds.Add(uk.Id, uri); } List <UserKnowledgeItem> items = _userKnowledgeQuery.ConvertEntitiesToItems(sourceLanguageId, translationLanguageId, userKnowledges); var innerResult = new List <UserRepetitionIntervalItem>(); foreach (UserKnowledgeItem userKnowledgeItem in items) { long id = userKnowledgeItem.Id; UserRepetitionInterval repetitionItem = repetitionsByItemIds[id]; var item = new UserRepetitionIntervalItem(repetitionItem, userKnowledgeItem, unknownNextTimeToShow); innerResult.Add(item); } return(innerResult); }
private Tuple <KnowledgeAddStatus, UserKnowledge> ConvertItemToEntity(string hash, UserKnowledgeItem knowledgeItem, StudyLanguageContext c) { if (IsInvalid(knowledgeItem)) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "UserKnowledgeQuery.Add переданы некорректные данные пользователю. Идентификатор пользователя {0}, идентификатор языка {1}, новый пункт знаний {2}", _userId, _languageId, KnowledgeToLogString(knowledgeItem)); return(new Tuple <KnowledgeAddStatus, UserKnowledge>(KnowledgeAddStatus.Error, null)); } UserKnowledge userKnowledge = c.UserKnowledge.FirstOrDefault(e => e.Hash == hash); if (userKnowledge != null) { if (GetDefaultDeletedDate() == userKnowledge.DeletedDate) { return(new Tuple <KnowledgeAddStatus, UserKnowledge>(KnowledgeAddStatus.AlreadyExists, userKnowledge)); } userKnowledge.CreationDate = DateTime.Now; userKnowledge.DeletedDate = GetDefaultDeletedDate(); } else { userKnowledge = AddKnowledge(knowledgeItem, c); } return(new Tuple <KnowledgeAddStatus, UserKnowledge>(KnowledgeAddStatus.Ok, userKnowledge)); }
internal UserKnowledgeItem(UserKnowledge userKnowledge) { Id = userKnowledge.Id; DataId = userKnowledge.DataId.HasValue ? userKnowledge.DataId.Value : IdValidator.INVALID_ID; DataType = (KnowledgeDataType)userKnowledge.DataType; Data = userKnowledge.Data; Tip = userKnowledge.Tip; CreationDate = userKnowledge.CreationDate; }
private UserKnowledge AddKnowledge(UserKnowledgeItem knowledgeItem, StudyLanguageContext c) { var userKnowledge = new UserKnowledge { UserId = _userId, LanguageId = _languageId, Data = knowledgeItem.Data, DataId = knowledgeItem.DataId, DataType = (int)knowledgeItem.DataType, Tip = knowledgeItem.Tip, Status = (byte)KnowledgeStatus.New, CreationDate = DateTime.Now, DeletedDate = GetDefaultDeletedDate(), SystemData = knowledgeItem.SystemData, Hash = GetUniqueHash(knowledgeItem) }; c.UserKnowledge.Add(userKnowledge); return(userKnowledge); }
private Tuple <UserKnowledge, UserRepetitionInterval> ConvertRow(RepresentationArea area, UserRepetitionInterval userRepetitionInterval) { DateTime minDateTime = new DateTime().GetDbDateTime(); var userKnowledge = new UserKnowledge { Id = area.Id, DataId = area.WordTranslationId, DataType = _dataType, Data = null, UserId = _userId, LanguageId = _languageId, CreationDate = minDateTime, DeletedDate = minDateTime, Hash = null, Tip = null, SystemData = null, Status = (int)KnowledgeStatus.Unknown }; return(new Tuple <UserKnowledge, UserRepetitionInterval>(userKnowledge, userRepetitionInterval)); }