public async Task <int> AddEditMerchantTerminal(List <OrganisationMerchantTerminalModel> model, string clientIpAddress) { int isSucces = 0; try { var orgid = model.FirstOrDefault().organisationId; var org = await _organisation.FindAsync(new { id = orgid }); var orgPrg = await _organisationProgram.FindAsync(new { organisationId = orgid }); var prd = await _program.FindAsync(new { id = orgPrg?.programId }); var result = await GetMultipleDataByConditionAsync(new { organisationId = orgid }); var DeletionChk = result.ToList().Where(x => !model.Select(m => m.id).ToList().Contains(x.id)); var JposTerminalURL = JPOSAPIURLConstants.Terminals.Replace("{issuer}", prd?.JPOS_IssuerId).Replace("{merchant}", org?.JPOS_MerchantId); if (DeletionChk.ToList().Count > 0) { foreach (var itemDelete in DeletionChk) { var jposId = itemDelete.Jpos_TerminalId; TerminalJposDto oTerminalJpos = new TerminalJposDto() { active = false }; await _sharedJPOSService.DeleteRespectiveDataJPOS(JposTerminalURL, oTerminalJpos, jposId, clientIpAddress, JPOSAPIConstants.Terminals); await DeleteEntityAsync(new { itemDelete.id }); } } foreach (var item in model) { var merchantExistCheck = await FindAsync(new { item.id }); var terminalTypeVal = (await _organisation.GetTerminalTypeList()).FirstOrDefault(x => x.Id == item.terminalType.Value).TerminalType; if (merchantExistCheck != null) { merchantExistCheck.id = item.id; merchantExistCheck.Jpos_TerminalId = item.Jpos_TerminalId; merchantExistCheck.organisationId = item.organisationId; merchantExistCheck.terminalId = item.terminalId; merchantExistCheck.terminalName = item.terminalName; merchantExistCheck.terminalType = item.terminalType; await UpdateAsync(merchantExistCheck, new { item.id }); var jposId = item.Jpos_TerminalId; TerminalJposDto oTerminalJpos = new TerminalJposDto() { active = true, info = item.terminalName, softVersion = terminalTypeVal, terminalId = item.terminalId }; await _sharedJPOSService.PostRespectiveDataJPOS(JposTerminalURL, oTerminalJpos, jposId, clientIpAddress, JPOSAPIConstants.Terminals); } else { TerminalJposDto oTerminalJpos = new TerminalJposDto() { active = true, info = item.terminalName, softVersion = terminalTypeVal, terminalId = item.terminalId }; int resultAdd = await _sharedJPOSService.PostRespectiveDataJPOS(JposTerminalURL, oTerminalJpos, null, clientIpAddress, JPOSAPIConstants.Terminals); var obj = new MerchantTerminal(); obj.id = item.id; obj.organisationId = item.organisationId; obj.terminalId = item.terminalId; obj.terminalName = item.terminalName; obj.terminalType = item.terminalType; obj.Jpos_TerminalId = resultAdd.ToString(); await AddAsync(obj); } } return(isSucces); } catch (Exception) { throw; } }