public async Task <Model.Certificate360> Invoke() { var certificate360 = await _dbContext.Certificate360.GetCertificateByCertNo(_certificateNumber); var history = new Certificate360History { RequestID = _request.ID, RefID = _request.RefID, RequestorID = _request.RequestorID, RequestorName = _request.RequestorName, AgentID = _request.AgentID, AgentName = _request.AgentName, IssuedOn = certificate360.IssuedOn, ExpiresOn = certificate360.ExpiresOn, SerialNo = certificate360.SerialNo, ApprovedBy = _approvedBy?.ID, ApprovedOn = DateTimeOffset.UtcNow, CertificateID = certificate360.ID }; await _dbContext.Certificate360.InsertCertificate360History(history); await _dbContext.Certificate360.DeleteAllCertificate360Menus(certificate360.ID); await _dbContext.Certificate360.DeleteAllCertificate360Ingredients(certificate360.ID); await _dbContext.Certificate360.DeleteAllCertificate360Teams(certificate360.ID); var menus = (await _dbContext.Menu.Query(new MenuFilter { RequestID = _request.ID, Scheme = certificate360.Scheme }))? .Where(e => e.ChangeType != ChangeType.Delete)? .Select(e => e.ID)? .ToList(); await _dbContext.Certificate360.MapCertificate360ToMenus(certificate360.ID, menus); var ingredients = (await _dbContext.Ingredient.Query( new IngredientFilter { RequestID = _request.ID }))? .Where(e => e.ChangeType != ChangeType.Delete)? .Select(e => e.ID)? .ToList(); await _dbContext.Certificate360.MapCertificate360ToIngredients(certificate360.ID, ingredients); var teams = _request.Teams? .Where(e => e.ChangeType != ChangeType.Delete)? .Select(e => e.ID)? .ToList(); await _dbContext.Certificate360.MapCertificate360ToTeams(certificate360.ID, teams); return(certificate360); }
public async Task <long> InsertCertificate360History(Certificate360History entity) { var param = new DynamicParameters(); param.Add("@RequestID", entity.RequestID); param.Add("@RefID", entity.RefID); param.Add("@RequestorID", entity.RequestorID); param.Add("@RequestorName", entity.RequestorName); param.Add("@AgentID", entity.AgentID); param.Add("@AgentName", entity.AgentName); param.Add("@Duration", entity.Duration); param.Add("@IssuedOn", entity.IssuedOn); param.Add("@ExpiresOn", entity.ExpiresOn); param.Add("@SerialNo", entity.SerialNo); param.Add("@ApprovedOn", entity.ApprovedOn); param.Add("@ApprovedBy", entity.ApprovedBy); param.Add("@CertificateID", entity.CertificateID); param.Add("@ID", dbType: DbType.Int64, direction: ParameterDirection.Output); await SqlMapper.ExecuteAsync(_unitOfWork.Connection, "InsertCertificate360History", param, commandType : CommandType.StoredProcedure, transaction : _unitOfWork.Transaction); return(param.Get <long>("@ID")); }
public Certificate360 Map(Certificate360 certificate, Certificate360History certHistory, Menu certMenu, Ingredient certIng, Premise certPremise, Customer certCustomer, HalalTeam certHalalTeam) { if (!_certificateCache.TryGetValue(certificate.ID, out Certificate360 result)) { certificate.Teams = new List <HalalTeam>(); //certificate.History = new List<CertificateHistory>(); certificate.Menus = new List <Menu>(); //certificate.Ingredients = new List<Ingredient>(); certificate.Premise = new Premise(); //certificate.Customer = new Customer(); _certificateCache[certificate.ID] = certificate; result = certificate; } if (certHistory.ID != 0) { if (!_certHistoryCache.TryGetValue(certHistory.ID, out Certificate360History certHistOut)) { _certHistoryCache[certHistory.ID] = certHistory; certHistOut = certHistory; //result.History.Add(certHistory); } } if (certMenu.ID != 0) { if (!_certMenuCache.TryGetValue(certMenu.ID, out Menu certMenuOut)) { _certMenuCache[certMenu.ID] = certMenu; certMenuOut = certMenu; result.Menus.Add(certMenu); } } if (certIng.ID != 0) { if (!_certIngCache.TryGetValue(certIng.ID, out Ingredient certIngOut)) { _certIngCache[certIng.ID] = certIng; certIngOut = certIng; //result.Ingredients.Add(certIng); } } if (certPremise.ID != 0) { if (!_certPremiseCache.TryGetValue(certPremise.ID, out Premise certPremiseOut)) { _certPremiseCache[certPremise.ID] = certPremise; certPremiseOut = certPremise; result.Premise = certPremise; } } if (!_certCustomerCache.TryGetValue(certCustomer.ID, out Customer certCustomerOut)) { _certCustomerCache[certCustomer.ID] = certCustomer; certCustomerOut = certCustomer; //result.Customer = certCustomer; } if (certHalalTeam.ID != 0) { if (!_certHalalTeamCache.ContainsKey(certHalalTeam.ID)) { _certHalalTeamCache[certHalalTeam.ID] = certHalalTeam; result.Teams.Add(certHalalTeam); } } return(result); }
public async Task <Model.Certificate360> Invoke() { var certificate360 = await _dbContext.Certificate360.GetCertificateByCertNo(_certificate.Number) ?? new Model.Certificate360(); certificate360.Number = _certificate.Number; certificate360.Status = CertificateStatus.Active; certificate360.Template = _certificate.Template; certificate360.Scheme = _certificate.Scheme; certificate360.SubScheme = _certificate.SubScheme; certificate360.IssuedOn = _certificate.IssuedOn; certificate360.ExpiresOn = _certificate.ExpiresOn; certificate360.SerialNo = _certificate.SerialNo; certificate360.CustomerID = _request.CustomerID; certificate360.CustomerName = _request.CustomerName; certificate360.RequestorID = _request.RequestorID; certificate360.RequestorName = _request.RequestorName; certificate360.AgentID = _request.AgentID; certificate360.AgentName = _request.AgentName; certificate360.PremiseID = _certificate.PremiseID; // Only case where existing certifcate is not yet available. // Probably from old data. if (certificate360.ID == 0) { certificate360.ID = await _dbContext.Certificate360.InsertCertificate360(certificate360); } else { await _dbContext.Certificate360.UpdateCertificate360(certificate360); } var history = new Certificate360History { RequestID = _request.ID, RefID = _request.RefID, RequestorID = _request.RequestorID, RequestorName = _request.RequestorName, AgentID = _request.AgentID, AgentName = _request.AgentName, IssuedOn = _certificate.IssuedOn, ExpiresOn = _certificate.ExpiresOn, SerialNo = _certificate.SerialNo, ApprovedBy = _approvedBy?.ID, ApprovedOn = DateTimeOffset.UtcNow, CertificateID = certificate360.ID }; await _dbContext.Certificate360.InsertCertificate360History(history); var menus = (await _dbContext.Menu.Query(new MenuFilter { RequestID = _request.ID, Scheme = _certificate.Scheme }))? .Where(e => e.ChangeType != ChangeType.Delete)? .Select(e => e.ID)? .ToList(); await _dbContext.Certificate360.MapCertificate360ToMenus(certificate360.ID, menus); var ingredients = (await _dbContext.Ingredient.Query( new IngredientFilter { RequestID = _request.ID }))? .Where(e => e.ChangeType != ChangeType.Delete)? .Select(e => e.ID)? .ToList(); await _dbContext.Certificate360.MapCertificate360ToIngredients(certificate360.ID, ingredients); return(certificate360); }
public async Task <Model.Certificate360> Invoke() { Model.Certificate360 result = null; // This assumes there will only be one lineitem for HC01. Else, need to reconsider. var lineItem = _request.LineItems?.FirstOrDefault(); if (lineItem != null) { var certificate360 = await _dbContext.Certificate360.GetCertificateByCertNo(_certificateNumber); if (certificate360 == null) { var premise = _request.Premises?.FirstOrDefault(e => e.IsPrimary); if (premise == null) { throw new BadRequestException("Primary premise not defined."); } certificate360 = new Model.Certificate360 { Number = _certificateNumber, Status = CertificateStatus.Active, Scheme = lineItem.Scheme.Value, SubScheme = lineItem.SubScheme, CustomerID = _request.CustomerID, CustomerName = _request.CustomerName, RequestorID = _request.RequestorID, RequestorName = _request.RequestorName, AgentID = _request.AgentID, AgentName = _request.AgentName, PremiseID = premise.ID }; certificate360.ID = await _dbContext.Certificate360.InsertCertificate360(certificate360); } var history = new Certificate360History { RequestID = _request.ID, RefID = _request.RefID, RequestorID = _request.RequestorID, RequestorName = _request.RequestorName, AgentID = _request.AgentID, AgentName = _request.AgentName, IssuedOn = certificate360.IssuedOn, ExpiresOn = certificate360.ExpiresOn, SerialNo = certificate360.SerialNo, ApprovedOn = DateTimeOffset.UtcNow, CertificateID = certificate360.ID }; await _dbContext.Certificate360.InsertCertificate360History(history); await _dbContext.Certificate360.DeleteAllCertificate360Teams(certificate360.ID); var teams = _request.Teams? .Where(e => e.ChangeType != ChangeType.Delete)? .Select(e => e.ID)? .ToList(); await _dbContext.Certificate360.MapCertificate360ToTeams(certificate360.ID, teams); } return(result); }