/// <summary>
        /// Handle <see cref="DeleteAccountantCommand"/>
        /// </summary>
        /// <param name="command">Command object</param>
        public async Task HandleImmediateAsync(DeleteAccountantCommand command)
        {
            Data.Models.Accountant model = accountantFactory.Create(command);
            DataContext.Accountants.Attach(model);

            DataContext.SetPropertyModified(model, nameof(model.IsRemoved));
            DataContext.SetPropertyModified(model, nameof(model.LastModificationDate));

            await this.Finalize();
        }
        /// <summary>
        /// Gets accountant details
        /// </summary>
        /// <param name="parameter">Query parameter</param>
        /// <returns></returns>
        public async Task <AccountantDto> GetResultsAsync(IdQueryParam parameter)
        {
            Data.Models.Accountant accountant = await this
                                                .DataContext
                                                .Accountants
                                                .Include(mdl => mdl.DocumentsList)
                                                .AsNoTracking()
                                                .Where(mdl => !mdl.IsRemoved)
                                                .FirstAsync(mdl => mdl.Id == parameter.Id);

            AccountantDto result = Mapper.Map <AccountantDto>(accountant);

            return(result);
        }
        /// <summary>
        /// Handle <see cref="UpdateAccountantCommand"/>
        /// </summary>
        /// <param name="command">Command object</param>
        public async Task HandleImmediateAsync(UpdateAccountantCommand command)
        {
            Data.Models.Accountant model = accountantFactory.Create(command);
            DataContext.Accountants.Attach(model);

            if (!string.IsNullOrEmpty(command.FirstName))
            {
                DataContext.SetPropertyModified(model, nameof(model.FirstName));
            }

            if (!string.IsNullOrEmpty(command.LastName))
            {
                DataContext.SetPropertyModified(model, nameof(model.LastName));
            }

            DataContext.SetPropertyModified(model, nameof(model.LastModificationDate));

            await this.Finalize();
        }
 /// <summary>
 /// Handle <see cref="AddAccountantCommand"/>
 /// </summary>
 /// <param name="command">Command object</param>
 public async Task HandleImmediateAsync(AddAccountantCommand command)
 {
     Data.Models.Accountant model = accountantFactory.Create(command);
     DataContext.Accountants.Add(model);
     await this.Finalize();
 }