public OperationResponse <FunzaCategoriesUpdateCommandOutputDTO> Execute(IEnumerable <FunzaCategoriesUpdateCommandInputDTO> input)
        {
            var result = new OperationResponse <FunzaCategoriesUpdateCommandOutputDTO>();

            using (var dbContextScope = this.DbContextScopeFactory.Create())
            {
                OperationResponse <DomainModel.Funza.CategoryReference> getByFunzaIdResult;
                OperationResponse prepareToSaveResult;
                DomainModel.Funza.CategoryReference entity = null;

                try
                {
                    foreach (var dtoItem in input)
                    {
                        getByFunzaIdResult = this.Repository.GetByFunzaId(dtoItem.Id);
                        bool addEntity = false;
                        if (!getByFunzaIdResult.IsSucceed)
                        {
                            addEntity = true;
                        }
                        else if (getByFunzaIdResult.Bag == null)
                        {
                            addEntity = true;
                        }

                        entity = getByFunzaIdResult.Bag;
                        entity = this.MapDTO(dtoItem, entity);

                        if (addEntity)
                        {
                            prepareToSaveResult = this.Repository.Add(entity);
                            result.AddResponse(prepareToSaveResult);
                        }
                    }


                    if (result.IsSucceed)
                    {
                        dbContextScope.SaveChanges();
                    }
                }
                catch (Exception ex)
                {
                    result.AddError("Error Sync Funza Categories", ex);
                }
            }

            return(result);
        }
        private CategoryReference MapDTO(FunzaCategoriesUpdateCommandInputDTO dtoItem, DomainModel.Funza.CategoryReference entity = null)
        {
            var result = entity ?? new CategoryReference();

            result.FunzaId          = dtoItem.Id;
            result.FunzaCreatedBy   = dtoItem.CreatedBy;
            result.FunzaCreatedDate = dtoItem.CreatedDate;
            result.Name             = dtoItem.Name;
            result.ToOrder          = dtoItem.ToOrder;
            result.ToStem           = dtoItem.ToStem;
            result.FunzaUpdatedBy   = dtoItem.UpdatedBy;
            result.FunzaUpdatedDate = dtoItem.UpdatedDate;

            return(result);
        }