using System; using System.Collections.Generic; using System.Linq; using System.Text; using Wierszowki.Core.Interfaces; using Wierszowki.Core.Linq; using xVal.ServerSide; namespace Wierszowki.Services { public class MagazineItemService { private readonly IRepository _repository; private readonly IRepository _userRepository; public MagazineItemService() { _repository = new LinqRepository(); _userRepository = new LinqRepository(); } public MagazineItemService(IRepository repository, IRepository userRepository) { _repository = repository; _userRepository = userRepository; } public MagazineItem Find(int id) { return _repository.Find(id).SingleOrDefault(); } public void Create(MagazineItem magazineItem, string currentUser) { var errors = DataAnnotationsValidationRunner.GetErrors(magazineItem); if (errors.Any()) { throw new RulesException(errors); } var errors1 = new List(); errors1 = ShowError(magazineItem); if (errors1.Count() > 0) throw new RulesException(errors1.AsEnumerable()); var user = _userRepository.FindOne(u => u.Login == currentUser); var now = DateTime.Now; magazineItem.CreatedBy = user.Id; magazineItem.CreatedOn = now; magazineItem.UpdatedBy = user.Id; magazineItem.UpdatedOn = now; _repository.Insert(magazineItem); } private List ShowError(MagazineItem magazineItem) { var errors1 = new List(); if (magazineItem.IssueId <= 0) { ErrorInfo e1 = new ErrorInfo("Magazine", "Proszę wybrać gazetę!"); errors1.Add(e1); ErrorInfo e = new ErrorInfo("IssueId", "Proszę wybrać numer wydania!"); errors1.Add(e); } return errors1; } public void Update(MagazineItem magazineItem, string currentUser) { var errors = DataAnnotationsValidationRunner.GetErrors(magazineItem); if (errors.Any()) throw new RulesException(errors); var errors1 = new List(); errors1 = ShowError(magazineItem); if (errors1.Count() > 0) throw new RulesException(errors1.AsEnumerable()); var user = _userRepository.FindOne(u => u.Login == currentUser); var now = DateTime.Now; var magazineItemToUpdate = _repository.FindOne(magazineItem.Id); magazineItemToUpdate.AuthorId = magazineItem.AuthorId; magazineItemToUpdate.Bonus = magazineItem.Bonus; magazineItemToUpdate.Caption = magazineItem.Caption; magazineItemToUpdate.Date = magazineItem.Date; magazineItemToUpdate.Description = magazineItem.Description; magazineItemToUpdate.IssueId = magazineItem.IssueId; magazineItemToUpdate.ItemTypeId = magazineItem.ItemTypeId; magazineItemToUpdate.Price = magazineItem.Price; magazineItemToUpdate.UpdatedBy = user.Id; magazineItemToUpdate.UpdatedOn = now; _repository.Update(magazineItemToUpdate); } public void Delete(MagazineItem magazineItem) { var magazineItemToDelete = _repository.FindOne(magazineItem.Id); if (magazineItemToDelete != null) { _repository.Delete(magazineItemToDelete); } } } }