Пример #1
0
        public virtual PolicyDTO ConvertToDto(Policy policy)
        {
            PolicyDTO dto = new PolicyDTO()
            {
                Id           = policy.Id,
                PolicyNumber = policy.PolicyNumber,
                IsNew        = policy.State == PolicyState.New,
                IsQuote      = policy.State == PolicyState.Quote,
                IsPolicy     = policy.State == PolicyState.Policy
            };

            if (policy.Contact != null)
            {
                CreateContactDto(policy, dto);
            }

            if (policy.Option != null)
            {
                CreatePolicyOptionDto(policy, dto);
            }

            if (policy.Payment != null)
            {
                CreatePaymentDetailDto(policy, dto);
            }

            return(dto);
        }
Пример #2
0
        public void ShowPolicyView(PolicyDTO policy, ActionType actionType)
        {
            var view = ServiceLocator.Current.GetInstance <IPolicyView>();

            ((PolicyVM)view.ViewModel).Load(policy, actionType);
            viewManager.ShowInDialog(view);
        }
Пример #3
0
 public PolicyVM()
 {
     init();
     Policy = new PolicyDTO {
         Name = "Policy1", DictionaryName = "Policy1"
     };
 }
Пример #4
0
        public async Task <PolicyDTO> AddPolicy(PolicyDTO newPolicy)
        {
            Policy policy = null;

            using (var context = new EnsuranceDBEntities())
            {
                var existingPolicy = context.Policies
                                     .Any(p => (p.Name == newPolicy.Name.Trim()));

                if (!existingPolicy)
                {
                    policy = new Policy
                    {
                        Name               = newPolicy.Name,
                        Description        = newPolicy.Description,
                        CoverageType       = newPolicy.CoverageType,
                        CoveragePercentage = newPolicy.CoveragePercentage,
                        CoverageTime       = newPolicy.CoverageTime,
                        Cost               = newPolicy.Cost,
                        RiskType           = newPolicy.RiskType
                    };
                    context.Policies.Add(policy);
                    await context.SaveChangesAsync();

                    newPolicy.Id = policy.Id;
                }
                else
                {
                    throw new Exception("A policy with the same name already exists.");
                }
            }

            return(newPolicy);
        }
Пример #5
0
        public async Task <PolicyDTO> UpdatePolicy(PolicyDTO updatePolicy)
        {
            var context1 = new EnsuranceDBEntities();

            using (var context = new EnsuranceDBEntities())
            {
                var policy = context.Policies
                             .Where(p => (p.Id == updatePolicy.Id))
                             .FirstOrDefault();

                if (policy != null)
                {
                    policy.Name               = updatePolicy.Name;
                    policy.Description        = updatePolicy.Description;
                    policy.CoverageType       = updatePolicy.CoverageType;
                    policy.CoveragePercentage = updatePolicy.CoveragePercentage;
                    policy.CoverageTime       = updatePolicy.CoverageTime;
                    policy.Cost               = updatePolicy.Cost;
                    policy.RiskType           = updatePolicy.RiskType;
                    await context.SaveChangesAsync();
                }
                else
                {
                    throw new Exception("The policy does not exist.");
                }
            }

            return(updatePolicy);
        }
        public async Task <string> SendQuoteSurvey(PolicyDTO policy)
        {
            string batchId = await GetBatchId();

            string fullName = $"{policy.Contact.FirstName} {policy.Contact.LastName}";

            SendGridMessage message = new SendGridMessage()
            {
                To      = new MailAddress[] { new MailAddress(policy.Contact.EmailAddress, fullName), },
                Subject = "RAC Bicycle Insurance Survey",
                From    = new MailAddress(ExternalEmailsFrom, "RAC Bicycle Insurance"),
                Html    = $"Hi",
                Text    = $"Hi"
            };

            message.Headers["batch_id"] = batchId;
            message.SetSendAt(DateTime.UtcNow.AddMinutes(10));
            message.EnableTemplateEngine(_surveyTemplateId);
            message.AddSubstitution("%%name%%", new List <string> {
                fullName
            });

            SendGrid.Web transportWeb = new SendGrid.Web(_sendGridApiKey);

            await transportWeb.DeliverAsync(message);

            return("Hello");
        }
        public bool SendPolicyDetails(PolicyDTO policy)
        {
            SendGridMessage message = new SendGridMessage();

            var subject = "RAC Bicycle Insurance - " + policy.PolicyNumber;
            var body    = CreateCsvFromDto(policy);

            message.To      = AdminEmailsTo.Select(email => new MailAddress(email)).ToArray();
            message.Subject = "RAC Bicycle Insurance - " + policy.PolicyNumber;
            message.From    = new MailAddress(AdminEmailsFrom, "RAC Bicycle Insurance");
            message.ReplyTo = new MailAddress[] { message.From };
            message.Text    = body;

            // Todo complete the zip file implementation
            // ZipFile zipFile = new ZipFile();
            // zipFile.Password = "******";
            // zipFile.AddEntry();


            message.AddAttachment(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(body)), subject + ".csv");

            var transportWeb = new SendGrid.Web(_sendGridApiKey);

            var task = Task.Run(async() =>
            {
                await transportWeb.DeliverAsync(message);
            });

            task.Wait(TimeSpan.FromSeconds(30));


            return(true);
        }
Пример #8
0
        public async Task <string> GetGoogleDataLayer(long?policyId)
        {
            PolicyDTO policy = await GetPolicy(policyId);

            try
            {
                Dictionary <string, string> transactionProducts = new Dictionary <string, string>();
                transactionProducts.Add("sku", "bicycleinsurance");
                transactionProducts.Add("name", "bicycle-insurance");
                transactionProducts.Add("category", "insurance");
                transactionProducts.Add("price", policy.Option.AnnualPremium.ToString());
                transactionProducts.Add("quantity", "1");

                double?gst = policy.Option.AnnualPremium - (policy.Option.AnnualPremium / 1.1);

                object DataLayerObject = new
                {
                    transactionId          = policy.Payment.TransactionId,
                    transactionAffiliation = "RAC Insurance",
                    transactionTotal       = policy.Option.AnnualPremium.ToString(),
                    transactionTax         = gst.ToString(),
                    transactionShipping    = 0,
                    transactionProducts,
                    @event = "bike.insurance.purchase"
                };
                return(JsonConvert.SerializeObject(DataLayerObject));
            }
            catch (Exception)
            {
                //todo google analytics is busted do something here.
                return(null);
            }
        }
        public async Task <IEnumerable <PolicyDTO> > GetPolicies(string roleName)
        {
            var listRolePoliciesResponse =
                await _client.ListRolePoliciesAsync(new ListRolePoliciesRequest { RoleName = roleName });


            var policyTasks = listRolePoliciesResponse
                              .PolicyNames
                              .Select(async policyName =>
            {
                var getRolePolicyResponse = await _client.GetRolePolicyAsync(new GetRolePolicyRequest
                {
                    PolicyName = policyName, RoleName = roleName
                });

                var document = JsonConvert.DeserializeObject(Uri.UnescapeDataString(getRolePolicyResponse.PolicyDocument));

                var p = new PolicyDTO(
                    policyName: policyName,
                    policyDocument: document
                    );


                return(p);
            }
                                      );

            var polices = await Task.WhenAll(policyTasks);

            return(polices);
        }
Пример #10
0
        public async Task <ActionResult <PolicyDTO> > Post([FromBody] CreatePolicyCommand data)
        {
            Guid policyId = await this.Mediator.Send(data);

            PolicyDTO policy = await this.Mediator.Send(new GetPolicyDetailsQuery(policyId));

            return(this.CreatedAtRoute("GetPolicyDetails", new { policyNumber = policyId }, policy));
        }
Пример #11
0
        protected void CreatePaymentDetailDto(Policy pol, PolicyDTO dto)
        {
            PaymentDetail payment = pol.Payment;

            dto.Payment = new PaymentDetailDTO()
            {
                TransactionId = payment.TransactionId
            };
        }
        public async Task <PolicyDTO> CreatePolicy(BicycleQuoteQuestion bicycleQuoteQuestion)
        {
            BicyclePolicyDetailDTO details = MapToDto(bicycleQuoteQuestion);
            PolicyDTO policy = await BicyclePolicyApi.CreateWithHttpMessagesAsync(details, Jwt.CreateAuthorizationHeader(null)).Data();

            policy = await UpdateContact(policy, bicycleQuoteQuestion.CustomerDetails.EmailAddress);

            return(policy);
        }
Пример #13
0
        public void UpdateModelFromDto(PolicyDTO policy, BicycleQuote model)
        {
            model.PolicyNumber = policy.PolicyNumber;

            if (policy.Contact != null)
            {
                model.PolicyDetail.Contact.FirstName     = policy.Contact.FirstName;
                model.PolicyDetail.Contact.LastName      = policy.Contact.LastName;
                model.PolicyDetail.Contact.DateOfBirth   = policy.Contact.DateOfBirth.HasValue ? new DateData(policy.Contact.DateOfBirth.Value) : null;
                model.PolicyDetail.Contact.ContactEmail  = policy.Contact.EmailAddress;
                model.PolicyDetail.Contact.ContactNumber = policy.Contact.PhoneNumber;

                if (policy.Contact.Address != null)
                {
                    model.PolicyDetail.Contact.Address  = policy.Contact.Address.AddressLine1;
                    model.PolicyDetail.Contact.Suburb   = policy.Contact.Address.Suburb;
                    model.PolicyDetail.Contact.PostCode = policy.Contact.Address.PostCode;
                }
            }

            BicycleQuoteQuoteOption option = new BicycleQuoteQuoteOption
            {
                Description     = "Bike Insurance",
                IsSelected      = true,
                PolicyStartDate = DateUtil.CurrentDateTime.ToString("dd MMMM yyyy")
            };

            if (policy.Option != null)
            {
                //
                // values are mandatory in the database, therefore we can make the assumption that they are set.
                // they are also set as [Required] in the policy, so no idea why they are defined as nullable types.
                //
                option.AnnualPremium    = (decimal)policy.Option.AnnualPremium.GetValueOrDefault();
                option.Excess           = (decimal)policy.Option.Excess.GetValueOrDefault();
                option.Code             = policy.Option.Code;
                option.SumInsured.Value = (int)Convert.ToDecimal(policy.Option.AgreedValue);


                model.PolicyPayment.PaymentDetails.PaymentMethod    = 1;
                model.PolicyPayment.PaymentDetails.PaymentFrequency = 1;
                model.PolicyPayment.PaymentDetails.Excess           = $"{policy.Option.Excess.GetValueOrDefault():C2}";
                model.PolicyPayment.PaymentDetails.Premium          = $"{policy.Option.AnnualPremium.GetValueOrDefault():C2}";

                model.PolicyPayment.PaymentDetails.PolicyStartDate = DateUtil.CurrentDateTime.ToString("dd MMMM yyyy");
            }

            model.Quote.Options = new List <BicycleQuoteQuoteOption> {
                option
            };

            if (policy.Payment != null)
            {
                // TODO : it's been paid, do we need to do anything here?!?
            }
        }
Пример #14
0
        protected async Task <PolicyDTO> UpdateContact(PolicyDTO policy, string emailAddress)
        {
            if (policy.Contact == null)
            {
                policy.Contact = new PolicyContactDTO();
            }

            policy.Contact.EmailAddress = emailAddress;
            return(await PolicyApi.SetContactWithHttpMessagesAsync(policy.Id, policy.Contact, Jwt.CreateAuthorizationHeader(policy.Id)).Data());
        }
Пример #15
0
 public void Load(PolicyDTO policyParam, ActionType actionTypeParam)
 {
     actionType = actionTypeParam;
     Policy     = policyParam;
     GridRuleListViewVisibility = false;
     if (actionType == ActionType.ModifyPolicy)
     {
         GridRuleListViewVisibility = true;
     }
 }
        public async Task <PolicyDTO> UpdatePolicy(long?policyId, BicycleQuoteQuestion bicycleQuoteQuestion)
        {
            BicyclePolicyDetailDTO details = MapToDto(bicycleQuoteQuestion);

            PolicyDTO policy = await BicyclePolicyApi.SetDetailsWithHttpMessagesAsync(policyId.GetValueOrDefault(), details, Jwt.CreateAuthorizationHeader(policyId)).Data();

            policy = await UpdateContact(policy, bicycleQuoteQuestion.CustomerDetails.EmailAddress);

            return(policy);
        }
Пример #17
0
        public async Task <PolicyDTO> UpdateSumInsured(long?policyId, decimal sumInsured)
        {
            PolicyDTO policy = await GetPolicy(policyId);

            policy.Option.AgreedValue = sumInsured.ToString(CultureInfo.InvariantCulture);

            policy = await PolicyApi.SetPolicyOptionWithHttpMessagesAsync(policy.Id, policy.Option, Jwt.CreateAuthorizationHeader(policy.Id)).Data();

            return(policy);
        }
        private void SetReferenceData(PolicyDTO policy, BicycleQuote model)
        {
            ViewData.SetReferenceData(_policyDetailFormHandler.CreateReferenceData());

            model.PolicyDetail.BikeDetails.Value = $"{Convert.ToDecimal(policy?.Option?.AgreedValue):C0}";
            model.PolicyDetail.BikeDetails.Make  = policy?.Detail?.Make;
            model.PolicyDetail.BikeDetails.Model = policy?.Detail?.Model;
            model.PolicyDetail.BikeDetails.Usage = policy?.Detail?.Type;
            model.PolicyDetail.BikeDetails.Year  = policy?.Detail?.Year;
        }
        public virtual async Task <ActionResult> Index()
        {
            BicycleQuote model  = new BicycleQuote();
            PolicyDTO    policy = await _policyDetailFormHandler.GetPolicy(this.GetPolicyId());

            _policyDetailFormHandler.UpdateModelFromDto(policy, model);
            SetReferenceData(policy, model);

            return(View(model));
        }
        public override PolicyDTO ConvertToDto(Policy policy)
        {
            PolicyDTO dto = base.ConvertToDto(policy);

            if (policy.Detail != null)
            {
                CreatePolicyDetailDto(policy, dto);
            }

            return(dto);
        }
Пример #21
0
 private Result <Address> CreateBrainTreeBillingAddress(string customerId, PolicyDTO policy)
 {
     return(_brainTreeGateway.Address.Create(customerId, new AddressRequest
     {
         FirstName = policy.Contact.FirstName,
         LastName = policy.Contact.LastName,
         StreetAddress = policy.Contact.Address.AddressLine1,
         PostalCode = policy.Contact.Address.PostCode,
         Locality = policy.Contact.Address.Suburb,
         Region = policy.Contact.Address.Suburb
     }));
 }
        protected void CreatePolicyDetailDto(Policy pol, PolicyDTO dto)
        {
            BicyclePolicyDetail detail = pol.Detail;

            dto.Detail = new BicyclePolicyDetailDTO()
            {
                Make  = detail.Make,
                Model = detail.Model,
                Type  = detail.Type,
                Year  = detail.Year
            };
        }
Пример #23
0
        private Result <Customer> CreateBraintreeCustomer(string paymentTypeNonce, PolicyDTO policy)
        {
            var results = _brainTreeGateway.Customer.Create(new CustomerRequest()
            {
                PaymentMethodNonce = paymentTypeNonce,
                Email     = policy.Contact.EmailAddress,
                FirstName = policy.Contact.FirstName,
                LastName  = policy.Contact.LastName,
                Phone     = policy.Contact.PhoneNumber,
            });

            return(results);
        }
Пример #24
0
        protected void CreatePolicyOptionDto(Policy pol, PolicyDTO dto)
        {
            PolicyOption option = pol.Option;

            dto.Option = new PolicyOptionDTO()
            {
                AnnualPremium = option.AnnualPremium,
                Code          = option.Code,
                Description   = option.Description,
                Excess        = option.Excess,
                AgreedValue   = option.AgreedValue
            };
        }
Пример #25
0
        private void SetReferenceData(PolicyDTO policy, BicycleQuote model)
        {
            ViewData.SetReferenceData(_confirmantionFormHandler.CreateReferenceData());

            model.Confirmation.Make  = policy?.Detail?.Make;
            model.Confirmation.Model = policy?.Detail?.Model;
            model.Confirmation.Year  = policy?.Detail?.Year;
            //
            // Todo: The startdate should be stored in the database.....
            //
            model.Confirmation.PolicyStartDate = DateUtil.CurrentDateTime.ToString("dd MMMM yyyy");

            model.Confirmation.Excess  = $"{Convert.ToDecimal(policy?.Option?.Excess):C0}";
            model.Confirmation.Premium = $"{Convert.ToDecimal(policy?.Option?.AnnualPremium):C0}";
        }
Пример #26
0
        public virtual async Task <ActionResult> Index()
        {
            BicycleQuote model = new BicycleQuote();

            PolicyDTO policy = await _confirmantionFormHandler.GetPolicy(this.GetPolicyId());

            model.GoogleDataLayer = await _confirmantionFormHandler.GetGoogleDataLayer(policy.Id);

            _confirmantionFormHandler.UpdateModelFromDto(policy, model);

            SetReferenceData(policy, model);

            ViewData.SetReferenceData(_confirmantionFormHandler.CreateReferenceData());
            return(View(model));
        }
Пример #27
0
        public IEnumerable <PolicyDTO> GetAllPolicies()
        {
            var policies = _context.Policies.Where(p => p.Claims.Count() >= 1).ToList();

            List <PolicyDTO> policyDTOs = new List <PolicyDTO>();

            foreach (var policy in policies)
            {
                PolicyDTO policyDTO = new PolicyDTO();
                policyDTO = _mapper.Map(policy, policyDTO);
                policyDTO.NumberOfSubmittedClaims = _context.Claims.Where(c => c.Police_No == policy.Police_No).Count();
                policyDTOs.Add(policyDTO);
            }

            return(policyDTOs);
        }
Пример #28
0
 public void Load(long policyId)
 {
     ShowBusyIndicator("در حال دریافت اطلاعات");
     policyService.GetPolicy((res, exp) => appController.BeginInvokeOnDispatcher(() =>
     {
         HideBusyIndicator();
         if (exp == null)
         {
             Policy      = res;
             DisplayName = BasicInfoAppLocalizedResources.RuleListViewTitle + " " + Policy.Name;
         }
         else
         {
             appController.HandleException(exp);
         }
     }), policyId);
 }
Пример #29
0
        public async Task <IHttpActionResult> PostAsync([FromBody] PolicyDTO policy)
        {
            if (policy == null || !ModelState.IsValid)
            {
                return(BadRequest());
            }
            try
            {
                PolicyDTO updatedPolicy = await repository.AddPolicy(policy);

                return(Content(HttpStatusCode.Created, updatedPolicy));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Пример #30
0
        private Result <Transaction> CreateBraintreeTransaction(PolicyDTO policy, string customerId)
        {
            Result <Transaction> createPaymentResult;
            var paymentRequest = new TransactionRequest()
            {
                Amount  = (decimal)policy.Option.AnnualPremium.Value,
                Options = new TransactionOptionsRequest
                {
                    SubmitForSettlement = true,
                    AddBillingAddressToPaymentMethod = true,
                    //StoreInVault = false, // prevents storing of paymentmethod in the vault regardless of outcome.
                },
                CustomerId = customerId
            };

            createPaymentResult = _brainTreeGateway.Transaction.Sale(paymentRequest);
            return(createPaymentResult);
        }