public int AddCreditProcess(CreditProcess creditProcess)
        {
            _databaseModel.CreditProcesses.Add(creditProcess);
            _databaseModel.SaveChanges();

            return creditProcess.CreditProcessId;
        }
        private static CreditProcess Map(EditViewModel editViewModel)
        {
            var creditProcess = new CreditProcess
                                   {
                                       CreditProcessId = editViewModel.CreditProcessId,
                                       CustomerId = editViewModel.Customer.CustomerId,
                                       UserId = editViewModel.Salesman.UserId,
                                       CreditStatusId = editViewModel.CreditStatus.CreditStatusId,
                                       Product = editViewModel.Product,
                                       //TODO: missing list of current flows with the different companies
                                   };

            return creditProcess;
        }
        private void UpdateCreditProcess(CreditProcess creditProcess, IEnumerable<ProcessFlowViewModel> creditProcessFlowsList)
        {
            _creditProcessesRepository.UpdateCreditProcess(creditProcess);

            foreach (var creditProcessFlow in creditProcessFlowsList)
            {
                var creditProcessFlowFormed = Map(creditProcessFlow);
                if (creditProcessFlow.IsNew)
                {
                    creditProcessFlowFormed.CreatedAt = DateTime.Now;
                    creditProcessFlowFormed.UpdatedAt = DateTime.Now;

                    var flowId = _creditProcessesRepository.AddCreditProcessFlow(creditProcessFlowFormed);
                    var creditProcessLog = CreateNewCreditProcessLog(creditProcessFlowFormed);
                    creditProcessFlowFormed.CreditProcessXCompanyId = flowId;
                    _creditProcessesLogManagement.AddCreditProcessLog(creditProcessLog);
                }
                else
                {
                    creditProcessFlowFormed.UpdatedAt = creditProcessFlowFormed.UpdatedAt ?? DateTime.Now;
                    if (creditProcessFlow.IsDeleted)
                    {
                        _creditProcessesRepository.DeleteCreditProcessFlow(creditProcessFlowFormed);
                    }
                    else
                    {
                        var creditProcessLog = UpdateCreditProcessLog(creditProcessFlowFormed);
                        _creditProcessesLogManagement.AddCreditProcessLog(creditProcessLog);
                        _creditProcessesRepository.UpdateCreditProcessFlow(creditProcessFlowFormed);
                    }
                }
            }
        }
        private void AddCreditProcess(CreditProcess creditProcess, List<ProcessFlowViewModel> creditProcessFlowsList)
        {
            var creditProcessId = _creditProcessesRepository.AddCreditProcess(creditProcess);
            foreach(var creditProcessFlow in creditProcessFlowsList)
            {
                creditProcessFlow.CreditProcessId = creditProcessId;
                var creditProcessFlowFormed = Map(creditProcessFlow);
                creditProcessFlowFormed.CreatedAt = DateTime.Now;
                creditProcessFlowFormed.UpdatedAt = DateTime.Now;

                var flowId = _creditProcessesRepository.AddCreditProcessFlow(creditProcessFlowFormed);
                creditProcessFlowFormed.CreditProcessXCompanyId = flowId;
                var creditProcessLog = CreateNewCreditProcessLog(creditProcessFlowFormed);
                _creditProcessesLogManagement.AddCreditProcessLog(creditProcessLog);
            }
        }
        public void UpdateCreditProcess(CreditProcess creditProcess)
        {
            var entry = _databaseModel.Entry(creditProcess);
            if (entry.State == EntityState.Detached)
            {
                var set = _databaseModel.Set<CreditProcess>();
                var attachedEntity = set.Find(creditProcess.CreditProcessId);  // You need to have access to key

                if (attachedEntity != null)
                {
                    var attachedEntry = _databaseModel.Entry(attachedEntity);
                    attachedEntry.CurrentValues.SetValues(creditProcess);
                }
                else
                {
                    entry.State = EntityState.Modified; // This should attach entity
                }
            }

            _databaseModel.SaveChanges();
        }