public IActionResult Create([FromBody] EnrolFamilyModel model) { NewFamilyResponse response; if (!ModelState.IsValid) { var error = ModelState.Values.FirstOrDefault().Errors.FirstOrDefault().ErrorMessage; return(BadRequest(new { error_occured = true, error_message = error })); } try { Guid userUUID = Guid.Parse(HttpContext.User.Claims.Where(w => w.Type == "UserUUID").Select(x => x.Value).FirstOrDefault()); int userId = _imisModules.GetInsureeModule().GetFamilyLogic().GetUserIdByUUID(userUUID); int officerId = _imisModules.GetInsureeModule().GetFamilyLogic().GetOfficerIdByUserUUID(userUUID); response = _imisModules.GetInsureeModule().GetFamilyLogic().Create(model, userId, officerId); } catch (ValidationException e) { throw new BusinessException(e.Message); } // If the response is 1001 then Family uploaded successfully but it failed to map control number entries return(Ok(response)); }
public void CreatePremium(EnrolFamilyModel model) { ImisPayment payment = new ImisPayment(_configuration, _hostingEnvironment, _loggerFactory); PaymentLogic paymentLogic = new PaymentLogic(_configuration, _hostingEnvironment, _loggerFactory); if (_configuration.GetValue <bool>("PaymentGateWay:CreatePremiumOnPaymentReceived")) { foreach (var family in model.Family) { foreach (var policy in family.Policies) { int paymentId = payment.GetPaymentId(policy.ControlNumber); _ = paymentLogic.CreatePremium(paymentId); } } } }
public int UpdateControlNumber(EnrolFamilyModel familyModel, NewFamilyResponse serverResponse) { foreach (var family in familyModel.Family) { foreach (var policy in family.Policies) { if (policy.ControlNumber.Length == 0) { continue; } var policyId = serverResponse.Family.Where(f => f.FamilyId == family.FamilyId).FirstOrDefault().Policies.Where(p => p.PolicyId == policy.PolicyId).Select(p => p.PolicyDBId).FirstOrDefault(); var sSQL = @"UPDATE PD SET InsuranceNumber = I.CHFID, PremiumID = PR.PremiumId, PolicyStage = Pol.PolicyStage, enrollmentDate = Pol.EnrollDate, ValidityFrom = GETDATE() FROM tblControlNumber CN INNER JOIN tblPaymentDetails PD ON CN.PaymentId = PD.PaymentID INNER JOIN tblInsuree I ON IsHead = 1 INNER JOIN tblPolicy Pol ON Pol.PolicyID = @PolicyId AND Pol.FamilyID = I.FamilyId LEFT OUTER JOIN tblPremium PR ON Pol.PolicyID = PR.PolicyID WHERE CN.ValidityTo IS NULL AND I.ValidityTo IS NULL AND CN.ControlNumber = @ControlNumber;"; SqlParameter[] parameters = { new SqlParameter("@ControlNumber", policy.ControlNumber), new SqlParameter("@PolicyId", policyId), }; try { var dh = new DB.SqlServer.DataHelper.DataHelper(_configuration); dh.Execute(sSQL, parameters, CommandType.Text); } catch (Exception) { return(1001); } } } return(0); }
public NewFamilyResponse CreateEnrolResponse(EnrolFamilyModel model) { var response = new NewFamilyResponse(); using (var imisContext = new ImisDB()) { foreach (var fam in model.Family) { var familyId = imisContext.TblInsuree.Where(i => i.Chfid == fam.HOFCHFID && i.IsHead == true && i.ValidityTo == null) .Select(i => i.FamilyId) .FirstOrDefault(); var family = imisContext.TblFamilies .Where(f => f.FamilyId == familyId && f.ValidityTo == null) .Include(f => f.TblInsuree) .Include(p => p.TblPolicy) .ThenInclude(pr => pr.TblPremium) .FirstOrDefault(); // if the family is not found means it failed to insert if (family == null) { continue; } family.TblInsuree = family.TblInsuree.Where(i => i.ValidityTo == null).ToList(); family.TblPolicy = family.TblPolicy.Where(p => p.ValidityTo == null).ToList(); var familyVM = new FamilyVM { FamilyId = fam.FamilyId, FamilyDBId = family.FamilyId, FamilyUUID = family.FamilyUUID }; foreach (var i in family.TblInsuree) { familyVM.Insurees.Add(new InsureeVM { InsureeId = fam.Insurees.Where(x => x.CHFID == i.Chfid).Select(x => x.InsureeId).FirstOrDefault(), InsureeDBId = i.InsureeId, InsureeUUID = i.InsureeUUID }); } foreach (var p in family.TblPolicy) { var premiums = new List <PremiumVM>(); p.TblPremium = p.TblPremium.Where(prem => prem.ValidityTo == null).ToList(); foreach (var pr in p.TblPremium) { premiums.Add(new PremiumVM { PremiumId = fam.Policies.Count > 0 ? fam.Policies.Where(x => x.ProdId == p.ProdId).FirstOrDefault().Premium.Where(y => y.Receipt == pr.Receipt).Select(z => z.PremiumId).FirstOrDefault() : 0, PremiumDBId = pr.PremiumId, PremiumUUID = pr.PremiumUUID }); } familyVM.Policies.Add(new PolicyVM { PolicyId = fam.Policies.Where(x => x.ProdId == p.ProdId).Select(y => y.PolicyId).FirstOrDefault(), PolicyDBId = p.PolicyId, PolicyUUID = p.PolicyUUID, Premium = premiums }); } response.Family.Add(familyVM); } } return(response); }
public NewFamilyResponse Create(EnrolFamilyModel model, int userId, int officerId) { var enrolFamily = model.GetEnrolmentFromModel(); enrolFamily.FileInfo.UserId = userId; enrolFamily.FileInfo.OfficerId = officerId; var XML = enrolFamily.XMLSerialize(); var JSON = JsonConvert.SerializeObject(enrolFamily); var EnrolmentDir = _configuration["AppSettings:Enrollment_Phone"] + Path.DirectorySeparatorChar; var JsonDebugFolder = _configuration["AppSettings:JsonDebugFolder"] + Path.DirectorySeparatorChar; var UpdatedFolder = _configuration["AppSettings:UpdatedFolder"] + Path.DirectorySeparatorChar; var SubmittedFolder = _configuration["AppSettings:SubmittedFolder"] + Path.DirectorySeparatorChar; var hof = enrolFamily.Families.Select(x => x.HOFCHFID).FirstOrDefault(); var FileName = string.Format("{0}_{1}_{2}.xml", hof, officerId.ToString(), DateTime.Now.ToString(DateTimeFormats.FileNameDateTimeFormat)); var JsonFileName = string.Format("{0}_{1}_{2}.json", hof, officerId.ToString(), DateTime.Now.ToString(DateTimeFormats.FileNameDateTimeFormat)); var xmldoc = new XmlDocument(); xmldoc.InnerXml = XML; if (!Directory.Exists(EnrolmentDir)) { Directory.CreateDirectory(EnrolmentDir); } xmldoc.Save(EnrolmentDir + FileName); if (!Directory.Exists(JsonDebugFolder)) { Directory.CreateDirectory(JsonDebugFolder); } File.WriteAllText(JsonDebugFolder + JsonFileName, JSON); int RV = -99; int InsureeUpd; int InsureeImported; using (var imisContext = new ImisDB()) { var xmlParameter = new SqlParameter("@XML", XML) { DbType = DbType.Xml }; var returnParameter = OutputParameter.CreateOutputParameter("@RV", SqlDbType.Int); var familySentParameter = OutputParameter.CreateOutputParameter("@FamilySent", SqlDbType.Int); var familyImportedParameter = OutputParameter.CreateOutputParameter("@FamilyImported", SqlDbType.Int); var familiesUpdParameter = OutputParameter.CreateOutputParameter("@FamiliesUpd", SqlDbType.Int); var familyRejectedParameter = OutputParameter.CreateOutputParameter("@FamilyRejected", SqlDbType.Int); var insureeSentParameter = OutputParameter.CreateOutputParameter("@InsureeSent", SqlDbType.Int); var insureeUpdParameter = OutputParameter.CreateOutputParameter("@InsureeUpd", SqlDbType.Int); var insureeImportedParameter = OutputParameter.CreateOutputParameter("@InsureeImported", SqlDbType.Int); var policySentParameter = OutputParameter.CreateOutputParameter("@PolicySent", SqlDbType.Int); var policyImportedParameter = OutputParameter.CreateOutputParameter("@PolicyImported", SqlDbType.Int); var policyRejectedParameter = OutputParameter.CreateOutputParameter("@PolicyRejected", SqlDbType.Int); var policyChangedParameter = OutputParameter.CreateOutputParameter("@PolicyChanged", SqlDbType.Int); var premiumSentParameter = OutputParameter.CreateOutputParameter("@PremiumSent", SqlDbType.Int); var premiumImportedParameter = OutputParameter.CreateOutputParameter("@PremiumImported", SqlDbType.Int); var premiumRejectedParameter = OutputParameter.CreateOutputParameter("@PremiumRejected", SqlDbType.Int); var sql = "exec @RV = uspConsumeEnrollments @XML, @FamilySent OUT, @FamilyImported OUT, @FamiliesUpd OUT, @FamilyRejected OUT, " + "@InsureeSent OUT, @InsureeUpd OUT, @InsureeImported OUT, " + "@PolicySent OUT, @PolicyImported OUT, @PolicyRejected OUT, @PolicyChanged OUT," + "@PremiumSent OUT, @PremiumImported OUT, @PremiumRejected OUT"; DbConnection connection = imisContext.Database.GetDbConnection(); using (DbCommand cmd = connection.CreateCommand()) { cmd.CommandText = sql; cmd.Parameters.AddRange(new[] { xmlParameter, returnParameter, familySentParameter, familyImportedParameter, familiesUpdParameter, familyRejectedParameter, insureeSentParameter, insureeUpdParameter, insureeImportedParameter, policySentParameter, policyImportedParameter, policyRejectedParameter, policyChangedParameter, premiumSentParameter, premiumImportedParameter, premiumRejectedParameter }); if (connection.State.Equals(ConnectionState.Closed)) { connection.Open(); } using (var reader = cmd.ExecuteReader()) { // Displaying errors in the Stored Procedure in Debug mode do { while (reader.Read()) { Debug.WriteLine("Error/Warning: " + reader.GetValue(0)); } } while (reader.NextResult()); } } InsureeUpd = insureeUpdParameter.Value == DBNull.Value ? 0 : (int)insureeUpdParameter.Value; InsureeImported = insureeImportedParameter.Value == DBNull.Value ? 0 : (int)insureeImportedParameter.Value; RV = (int)returnParameter.Value; if (RV == 0 && (InsureeImported > 0 || InsureeUpd > 0)) { if (!Directory.Exists(UpdatedFolder)) { Directory.CreateDirectory(UpdatedFolder); } foreach (var picture in model.Family.Select(x => x.Insurees.Select(s => s.Picture)).FirstOrDefault().ToList()) { if (picture != null) { if (picture.ImageContent != null) { if (picture.ImageContent.Length != 0) { File.WriteAllBytes(UpdatedFolder + Path.DirectorySeparatorChar + picture.ImageName, Convert.FromBase64String(picture.ImageContent)); } } } } } } var newFamily = new NewFamilyResponse(); newFamily.Response = RV; if (RV == 0) { newFamily = CreateEnrolResponse(model); // Update the control number newFamily.Response = UpdateControlNumber(model, newFamily); // Create Premium CreatePremium(model); } return(newFamily); }
public NewFamilyResponse Create(EnrolFamilyModel model, int userId, int officerId) { return(familyRepository.Create(model, userId, officerId)); }