using ModuleTools.BusinessLogics; using ModuleTools.Enums; using SecurityBusinessLogic.BindingModels; using SecurityBusinessLogic.Interfaces; using SecurityBusinessLogic.ViewModels; using System; using System.Linq; namespace SecurityBusinessLogic.BusinessLogics { /// /// Логика работы с пользователями /// public class UserBusinessLogic : GenericBusinessLogic { public UserBusinessLogic(IUserService service) : base(service, "Пользователи", AccessOperation.Пользователи) { } public UserViewModel GetOrCreateUser(UserGetBindingModel model, string password) { Errors.Clear(); try { model.HaveRight = !NoAccess(model, AccessType.View); if (model.HaveRight && !_allowSimpleView) { throw new MethodAccessException("Нет прав на получение списка"); } var result = Service.Read(model); if (result.IsSucceeded) { return result.Result as UserViewModel; } if (result.Errors.First().Message == "Элемент удален") { result = Service.Restore(model); } else if (result.Errors.First().Message == "Элемент не найден") { result = Service.Create(new UserSetBindingModel { Login = model.Login, Password = password }); } if (!result.IsSucceeded) { Errors.AddRange(result.Errors); return null; } return result.Result as UserViewModel; } catch (Exception ex) { Errors.Add(("Ошибка получения", ex.Message)); } return null; } } }