public async Task <ActionResult <IResult> > SubmitCovidDeclarationData([FromBody] CovidHealthTrackViewModel covidHealthTrackViewModel) { _logger.LogInformation("Save employee covid declaration detail"); var result = await _healthTrackService.CreateCovidHealthTrack(covidHealthTrackViewModel); return(StatusCode((int)result.StatusCode, result)); }
private async Task SendCovidEmail(CovidHealthTrackViewModel covidHealthTrackViewModel) { var appEmailHelper = new AppEmailHelper(); var hrEmployeeList = await _employeeRepository.GetEmployeeDetailsByRole(EmployeeRolesEnum.HRManager.ToString()); if (hrEmployeeList.Count > 0) { foreach (var hrEmployee in hrEmployeeList) { appEmailHelper.ToMailAddresses.Add(new MailAddress(hrEmployee.Email, hrEmployee.Name)); } } // appEmailHelper.ToMailAddresses.Add(new MailAddress(hrEmployee.Email, hrEmployee.Name)); // appEmailHelper.CCMailAddresses.Add(new MailAddress(securityEmp.Email, securityEmp.Name)); appEmailHelper.MailTemplate = MailTemplate.EmployeeCovidDeclaration; appEmailHelper.Subject = "Covid declaration submission"; CovidHealthTrackViewModel emailVm = new CovidHealthTrackViewModel(); emailVm.MapFromViewModel(covidHealthTrackViewModel); appEmailHelper.MailBodyViewModel = emailVm; await appEmailHelper.InitMailMessage(); }
/// <summary> /// /// </summary> /// <param name="covidHealthTrackViewModel"></param> /// <returns></returns> public async Task <IResult> CreateCovidHealthTrack(CovidHealthTrackViewModel covidHealthTrackViewModel) { var result = new Result { Operation = Operation.Create, Status = Status.Success, StatusCode = HttpStatusCode.OK }; try { if (covidHealthTrackViewModel != null) { var todayDate = DateTime.Now.Date; var existingDeclaration = _healthTrackRepository.GetExistingCovidDeclaration(covidHealthTrackViewModel.CovidConfirmationDate, covidHealthTrackViewModel.EmployeeId); if (existingDeclaration.Result != null) { result.Status = Status.Fail; result.StatusCode = HttpStatusCode.NotAcceptable; result.Message = "You have already submitted declaration for this confirmation date."; return(result); } else { // now add logic to create Covid declaration var covidHealthTrackModel = new CovidHealthTrack(); // To map health Track detail covidHealthTrackModel.MapFromViewModel(covidHealthTrackViewModel, (ClaimsIdentity)_principal.Identity); covidHealthTrackModel = await _healthTrackRepository.CreateCovidHealthTrack(covidHealthTrackModel); covidHealthTrackViewModel.Id = covidHealthTrackModel.Id; var employeeVm = new EmployeeViewModel(); employeeVm.MapFromModel(covidHealthTrackModel.Employee); covidHealthTrackViewModel.Employee = employeeVm; // send email to HR await SendCovidEmail(covidHealthTrackViewModel); result.Body = covidHealthTrackViewModel; return(result); } } result.Status = Status.Fail; result.StatusCode = HttpStatusCode.BadRequest; return(result); } catch (Exception ex) { _logger.LogError(ex, ex.Message); result.Status = Status.Error; result.Message = ex.Message; result.StatusCode = HttpStatusCode.InternalServerError; return(result); } }
/// <summary> /// /// </summary> /// <param name="declarationId"></param> /// <returns></returns> public async Task <IResult> GetCovidDeclaration(int declarationId) { var covidHealthViewModelList = new List <CovidHealthTrackViewModel>(); var result = new Result { Operation = Operation.Read, Status = Status.Success, StatusCode = HttpStatusCode.OK }; try { var declarationList = await _healthTrackRepository.GetCovidDeclaration(declarationId); if (declarationList.Any()) { covidHealthViewModelList = declarationList.Select(declaration => { var covidHealthViewModel = new CovidHealthTrackViewModel(); covidHealthViewModel.MapFromModel(declaration); var employeeVm = new EmployeeViewModel(); employeeVm.MapFromModel(declaration.Employee); covidHealthViewModel.Employee = employeeVm; return(covidHealthViewModel); }).ToList(); result.Body = covidHealthViewModelList; } else { result.Status = Status.Fail; result.StatusCode = HttpStatusCode.NotFound; result.Message = "No declaration exists"; } } catch (Exception ex) { _logger.LogError(ex, ex.Message); result.Status = Status.Error; result.Message = ex.Message; result.StatusCode = HttpStatusCode.InternalServerError; } return(result); }