public SaveHeaderFooterOutput GetCompanyId(string companyId)
        {
            var output    = new SaveHeaderFooterOutput();
            var dtCompany = Mapper.Map <HEADER_FOOTER>(_repository.Get(c => c.BUKRS == companyId).FirstOrDefault());

            if (dtCompany != null)
            {
                output.MessageExist = "1";
                return(output);
            }
            return(output);
        }
        public SaveHeaderFooterOutput Save(HeaderFooterDetails headerFooterData, string userId)
        {
            HEADER_FOOTER dbData = null;

            if (headerFooterData.HEADER_FOOTER_ID > 0)
            {
                //update
                dbData =
                    _repository.Get(c => c.HEADER_FOOTER_ID == headerFooterData.HEADER_FOOTER_ID, null, includeTables)
                    .FirstOrDefault();

                var headerFooterUpdated = Mapper.Map <HEADER_FOOTER>(headerFooterData);


                SetChanges(dbData, headerFooterUpdated, userId);


                //hapus dulu aja ya ? //todo ask the cleanist way
                var dataToDelete =
                    _mapRepository.Get(c => c.HEADER_FOOTER_ID == headerFooterData.HEADER_FOOTER_ID)
                    .ToList();
                foreach (var item in dataToDelete)
                {
                    _mapRepository.Delete(item);
                }



                Mapper.Map <HeaderFooterDetails, HEADER_FOOTER>(headerFooterData, dbData);


                dbData.HEADER_FOOTER_FORM_MAP = null;
                dbData.HEADER_FOOTER_FORM_MAP = Mapper.Map <List <HEADER_FOOTER_FORM_MAP> >(headerFooterData.HeaderFooterMapList);
            }
            else
            {
                //Insert
                dbData = Mapper.Map <HEADER_FOOTER>(headerFooterData);
                dbData.CREATED_DATE = DateTime.Now;
                dbData.CREATED_BY   = userId;
                _repository.Insert(dbData);
            }


            var output = new SaveHeaderFooterOutput();

            try
            {
                _uow.SaveChanges();
                output.Success        = true;
                output.HeaderFooterId = dbData.HEADER_FOOTER_ID;
            }
            catch (DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                      eve.Entry.Entity.GetType().Name, eve.Entry.State);
                    foreach (var ve in eve.ValidationErrors)
                    {
                        Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                          ve.PropertyName, ve.ErrorMessage);
                    }
                }
                throw;
            }
            catch (Exception exception)
            {
                _logger.Error(exception);
                output.Success      = false;
                output.ErrorCode    = ExceptionCodes.BaseExceptions.unhandled_exception.ToString();
                output.ErrorMessage = EnumHelper.GetDescription(ExceptionCodes.BaseExceptions.unhandled_exception);
            }
            return(output);
        }