/// <summary> /// запрет на изменение в ситуациях- /// блокировки проекта, ожидание модерации(выше 1 уровня), проект принят /// добавление истории проекта - если модератор вернул на доработку /// </summary> /// <param name="projectId"></param> /// <param name="title"></param> /// <param name="content"></param> /// <param name="priceAnnotation"></param> /// <param name="price"></param> /// <param name="isOpen"></param> public CompositeData EditAndAddHistory(Guid projectId, string title, string content, string priceAnnotation, int price, bool isOpen) { var result = new CompositeData(_msgSuccess, true); var serviceData = _endowmentRepositories.ServiceData.FindActual(projectId); if (serviceData == null) //проект ещё не попадал в очередь, все изменения проходят без садизма { Edit(projectId, title, content, priceAnnotation, price, isOpen); return result; } var status = _endowmentRepositories.Statuses.Find(serviceData.StatusId); result = CanNotBeEdit(status, serviceData); if (!result.Success) return result; var queue = _endowmentRepositories.ProjectQueue.Find(projectId); if (queue == null) { if (status.Title.Equals(StatusesManager.Return)) //если модератор вернул на доработку { AddToHistory(projectId); if (_endowmentRepositories.Moderators.Find(serviceData.ModeratorId) != null) //если модератор не уволен _endowmentHandlers.QueueProject .Create(projectId, serviceData.ModeratorId); //возвращаем в очередь модератора else { //todo выбрать случайного модератора? var newModer = _endowmentRepositories.Moderators.GetAll().FirstOrDefault(m => m.LevelId.Equals(m.LevelId)); if (newModer != null) _endowmentHandlers.QueueProject.Create(projectId, newModer.UserId); else _endowmentHandlers.QueueProject.Create(projectId); } var statusId = _endowmentRepositories.Statuses.Find(_statusWaiting).Id; _endowmentHandlers.ServiceData.Create( serviceData.ModeratorId, projectId, statusId, _defaultComment); _endowmentHandlers.ServiceData.ResetActual(serviceData.Id); _endowmentHandlers.Project.Edit(projectId, title, content); } } else if (queue.ModeratorId.HasValue) { OnFirstLevelWaiting(projectId, serviceData.Id, title, content, status.Title); } _endowmentHandlers.SaveChanges(); return result; }
private CompositeData<Guid> TryCreate(string username, string password) { //todo подумать над уникальностью email var loginIsExist = _endowmentRepositories.Users.IsExist(username); var answerWithUserId = new CompositeData<Guid>(String.Format("Логин: {0} уже существует", username)); var userId = Guid.Empty; if (!loginIsExist) userId = _endowmentHandlers.User.Create(username, password); if (!userId.Equals(Guid.Empty)) answerWithUserId = new CompositeData<Guid>(String.Format( "Пользоватеь: {0} спешно зарегестрирован", username), true, userId); return answerWithUserId; }