Мой API для получения агентов по местоположению ниже:
Код: Выделить всё
[HttpGet("AgentsByLocation")]
public IActionResult GetAgentsByLocation(string type, string code)
{
try
{
var agents = _context.SP_GET_AGENT
.FromSqlRaw("EXECUTE dbo.SP_GET_AGENT_BY_LOCATION @type, @code",
new SqlParameter("@type", type),
new SqlParameter("@code", code))
.ToList();
// Check for null values before returning the result
agents = agents.Where(a => a != null).ToList();
return Ok(agents);
}
catch (Exception ex)
{
_logger.LogError(ex, "An error occurred while retrieving agents by location.");
return StatusCode(500, new { Message = $"An error occurred while retrieving agents by location. Exception: {ex.Message}" });
}
}
Код: Выделить всё
public class SP_GET_AGENT
{
[Key]
public string? AGENT_CODE { get; set; }
public string? ROLE { get; set; }
public string? AGENT_NAME { get; set; }
public string? ManagerName { get; set; }
public string? MANAGER_EMAIL { get; set; }
public string? EMAIL { get; set; }
public int? IS_BD { get; set; }
public int? IS_EXITED { get; set; }
public string? TEAM_NAME { get; set; }
public DateTime? DATE_CREATED { get; set; }
public DateTime? DATE_EXITED { get; set; }
public string? BRANCH_NAME { get; set; }
public string? BRANCH_CODE { get; set; }
public string? STATE_NAME { get; set; }
public string? ZONE_CODE { get; set; }
public string? ZonalHeadQuarter { get; set; }
public string? Directorate { get; set; }
public int? DIRECTORATE_CODE { get; set; }
public int? ROLE_ID { get; set; }
public string? AGENT_TYPE { get; set; }
public int? GOAL_ID { get; set; }
public string? MOBILE_NUMBER { get; set; }
public string? POSTED_BY { get; set; }
public string? APPROVED_BY { get; set; }
public string? TERMINATED_BY { get; set; }
public string? TERMINATED_APPROVED_BY { get; set; }
public DateOnly? APPROVED_DATE { get; set; }
}
}
Код: Выделить всё
ALTER PROCEDURE \[dbo\].\[SP_GET_AGENT_BY_LOCATION\]
@type VARCHAR(20),
@code VARCHAR(20)
AS
BEGIN
SELECT
A.AGENT_CODE,
R.NAME AS ROLE,
A.AGENT_NAME,
M.ManagerName,
AM.EMAIL AS MANAGER_EMAIL,
A.EMAIL,
A.IS_BD,
A.IS_EXITED,
T.NAME AS TEAM_NAME,
A.DATE_CREATED,
A.DATE_EXITED,
B.\[DESCRIPTION\] AS BRANCH_NAME,
A.BRANCH_CODE,
S.\[DESCRIPTION\] AS STATE_NAME,
A.ZONE_CODE,
Z.ZonalHeadQuarter,
D.Directorate,
A.DIRECTORATE_CODE,
A.ROLE_ID,
A.AGENT_TYPE,
A.GOAL_ID,
A.MOBILE_NUMBER,
A.POSTED_BY,
A.APPROVED_BY,
A.TERMINATED_BY,
A.TERMINATED_APPROVED_BY,
A.APPROVED_DATE
FROM
\[ACCOUNT_MAPPING\].\[dbo\].\[AGENTS\] A
LEFT JOIN PPL_Directorate D ON A.DIRECTORATE_CODE = D.DirectorateId
LEFT JOIN PPL_ZONE Z ON A.ZONE_CODE = Z.ZoneId
LEFT JOIN STATES S ON A.STATS_CODE = S.CODE
LEFT JOIN BRANCH B ON A.BRANCH_CODE = B.CODE
LEFT JOIN AGENT_TEAM T ON A.TEAM_CODE = T.ID
LEFT JOIN MANAGERS M ON A.MANAGER_CODE = M.ManagerCode
LEFT JOIN AGENTS AM ON AM.MANAGER_CODE = M.ManagerCode
LEFT JOIN ROLES R ON A.ROLE_ID = R.ROLE_ID
WHERE
(@type = 'Branch' AND A.BRANCH_CODE = @code) OR
(@type = 'Zone' AND A.ZONE_CODE = @code) OR
(@type = 'Directorate' AND A.DIRECTORATE_CODE = @code);
END;
Источник: https://stackoverflow.com/questions/781 ... ull-values