protected async Task HandleValidSubmit()
        {
            Mapper.Map(ClaimEditModel, Claim);

            if (Claim.Id != 0) //Edit
            {
                Claim.RequesterComments = RequesterComments;
                Claim.ApproverComments  = ApproverComments;
                Claim.FinanceComments   = FinanceComments;
                await ClaimService.UpdateClaim(Claim);

                StatusClass = "alert-success";
                Message     = "Employee updated successfully.";
                Saved       = true;
                //StateHasChanged();
                NavigationManager.NavigateTo("/ins/Claim", true);
            }
            else//Create
            {
                Claim.RequesterComments = RequesterComments;
                Claim.ApproverComments  = ApproverComments;
                Claim.FinanceComments   = FinanceComments;

                Claim result = await ClaimService.CreateClaim(Claim);

                if (result != null)
                {
                    StatusClass = "alert-danger";
                    Message     = "Something went wrong Creating the new employee. Please try again.";
                    Saved       = false;
                }
                NavigationManager.NavigateTo("/ins/Claim", true);
            }
        }
示例#2
0
        public void GivenParseEmail_WhenEmailContainsValidDescription_ThenValueIsReturned(string fileName, string expected)
        {
            string textFromFile = File.ReadAllText(fileName);
            var    claim        = new ClaimService().ParseClaim(textFromFile);

            Assert.Equal(expected, claim.Event.Description);
        }
示例#3
0
        public HttpResponseMessage GetExpenseDetails(string emailBody)
        {
            Expense      expense      = new Expense();
            EmailContent emailContent = new EmailContent();

            emailContent.EmailBody = emailBody;
            ClaimService service = new ClaimService();

            try
            {
                expense = service.GetExpenseDetails(emailContent);
                if (expense != null)
                {
                    return(Request.CreateResponse <Expense>(HttpStatusCode.OK, expense));
                }
                else
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }
示例#4
0
        public async Task <ActionResult> Create(AddCommentViewModel viewModel)
        {
            var claim = await ClaimsRepository.GetClaim(viewModel.ProjectId, viewModel.ClaimId);

            var error = WithClaim(claim);

            if (error != null)
            {
                return(error);
            }
            try
            {
                if (viewModel.HideFromUser)
                {
                    claim.Project.RequestMasterAccess(CurrentUserId);
                }
                await ClaimService.AddComment(claim.ProjectId, claim.ClaimId, CurrentUserId, viewModel.ParentCommentId,
                                              !viewModel.HideFromUser, viewModel.CommentText, viewModel.FinanceAction);

                return(RedirectToAction("Edit", "Claim", new { viewModel.ClaimId, viewModel.ProjectId }));
            }
            catch
            {
                //TODO: Message that comment is not added
                return(RedirectToAction("Edit", "Claim", new { viewModel.ClaimId, viewModel.ProjectId }));
            }
        }
示例#5
0
        public void GivenParseEmail_WhenEmailContainsValidTotal_ThenValueIsReturned(string fileName, decimal expected)
        {
            string textFromFile = File.ReadAllText(fileName);
            var    claim        = new ClaimService().ParseClaim(textFromFile);

            Assert.Equal(expected, claim.Expense.Total);
        }
示例#6
0
        public void CreateMethodSetsLocationHeader()
        {
            // Arrange
            var mockRepository = new Mock <IClaimRepository>();

            var service    = new ClaimService(mockRepository.Object);
            var controller = new ClaimController(service);

            // Act
            IHttpActionResult actionResult = controller.CreateClaim(new ClaimBusinessEntities.Claim
            {
                ClaimNumber       = "testClaimNo",
                ClaimantFirstName = "test",
                Vehicles          = new List <ClaimBusinessEntities.VehicleDetails>()
                {
                    new ClaimBusinessEntities.VehicleDetails()
                    {
                        VehicleId = 2, Vin = "100"
                    }
                }
            });
            var createdResult = actionResult as CreatedAtRouteNegotiatedContentResult <ClaimBusinessEntities.Claim>;

            // Assert
            Assert.IsNotNull(createdResult);
            Assert.AreEqual("GetByClaimNo", createdResult.RouteName);
            Assert.AreEqual("testClaimNo", createdResult.RouteValues["claimNo"]);
        }
示例#7
0
        public void GetReturnsClaimWithSameId()
        {
            // Arrange
            var mockRepository = new Mock <IClaimRepository>();

            mockRepository.Setup(x => x.GetClaimById(42))
            .Returns(new Claim
            {
                ClaimId           = 42,
                ClaimNumber       = "testing",
                ClaimantFirstName = "test",
                ClaimVechicles    = new List <ClaimVechicle>()
                {
                    new ClaimVechicle()
                    {
                        Vehicle = new Vehicle()
                        {
                            VehicleId = 2, Vin = "100"
                        }
                    }
                }
            });
            var service    = new ClaimService(mockRepository.Object);
            var controller = new ClaimController(service);

            // Act
            IHttpActionResult actionResult = controller.GetClaimById(42);
            var contentResult = actionResult as OkNegotiatedContentResult <ClaimBusinessEntities.Claim>;

            // Assert
            Assert.IsNotNull(contentResult);
            Assert.IsNotNull(contentResult.Content);
            Assert.AreEqual(42, contentResult.Content.ClaimId);
            Assert.AreEqual("100", contentResult.Content.Vehicles.FirstOrDefault().Vin);
        }
        public IActionResult PostClaim(ClaimViewModel model)
        {
            String PostView = "Index";

            try
            {
                //if (ModelState.IsValid)
                //{

                //var basket = _orderSvc.MapOrderToBasket(model);
                ClaimService claimService = new ClaimService();
                claimService.CreateClaim(model);

                if (model.Consequence.ToUpper().Equals("C"))
                {
                    PostView = "Canceled";
                }
                else
                {
                    PostView = "Delayed";
                }
                //}
            }
            catch (Exception ex)
            {
                PostView = "Index";
                ModelState.AddModelError("Error", $"It was not possible to create a new order, please try later on ({ex.GetType().Name} - {ex.Message})");
            }

            return(View(PostView, model));
        }
示例#9
0
        public HttpResponseMessage GetReservationDetails(string emailBody)
        {
            Reservation  reservation  = new Reservation();
            EmailContent emailContent = new EmailContent();

            emailContent.EmailBody = emailBody;
            ClaimService service = new ClaimService();

            try
            {
                reservation = service.GetReservationDetails(emailContent);
                if (reservation != null)
                {
                    return(Request.CreateResponse <Reservation>(HttpStatusCode.OK, reservation));
                }
                else
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }
示例#10
0
        public void GivenParseEmail_WhenCostCentreTagIsMissing_UnknownCostCentreIsReturned(string fileName, string expectedMsg)
        {
            string textFromFile = File.ReadAllText(fileName);
            var    claim        = new ClaimService().ParseClaim(textFromFile);

            Assert.Equal(expectedMsg, claim.Expense.CostCentre);
        }
示例#11
0
        public async Task ChangeStatusToSettledShouldDoNothingOnNonExistingId()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "MyTestDb3")
                          .Options;
            var dbContext = new ApplicationDbContext(options);

            dbContext.Claims.Add(new InsuranceClaim {
                Id = 1, Status = ClaimStatus.Open
            });
            dbContext.Claims.Add(new InsuranceClaim {
                Id = 2, Status = ClaimStatus.Pending
            });
            dbContext.Claims.Add(new InsuranceClaim {
                Id = 3, Status = ClaimStatus.Settled
            });
            await dbContext.SaveChangesAsync();

            var repository    = new EfDeletableEntityRepository <InsuranceClaim>(dbContext);
            var service       = new ClaimService(repository);
            int nonExistingId = 4;
            await service.ChangeStatusToSettled(nonExistingId);

            Assert.True((await repository.GetByIdAsync(1)).Status == ClaimStatus.Open);
            Assert.True((await repository.GetByIdAsync(2)).Status == ClaimStatus.Pending);
            Assert.True((await repository.GetByIdAsync(3)).Status == ClaimStatus.Settled);
        }
示例#12
0
        public void GetAllUnsettledByPolicyIdShouldReturnCorrectCountOnNonEmptyRepository()
        {
            var repository = new Mock <IDeletableEntityRepository <InsuranceClaim> >();

            repository.Setup(r => r.All()).Returns(new List <InsuranceClaim>
            {
                new InsuranceClaim {
                    PolicyId = "Pesho", Status = ClaimStatus.Open
                },
                new InsuranceClaim {
                    PolicyId = "Pesho", Status = ClaimStatus.Pending
                },
                new InsuranceClaim {
                    PolicyId = "test", Status = ClaimStatus.Open
                },
                new InsuranceClaim {
                    PolicyId = "test", Status = ClaimStatus.Pending
                },
                new InsuranceClaim {
                    PolicyId = "test", Status = ClaimStatus.Settled
                },
            }.AsQueryable());
            var    service  = new ClaimService(repository.Object);
            string policyId = "test";

            Assert.Equal(2, service.GetAllUnsettledByPolicyId(policyId).Count);
        }
示例#13
0
 public UserManagementManager()
 {
     _userManagementService = new UserManagementService();
     _sessionService        = new SessionService();
     _claimService          = new ClaimService();
     _authorizationClient   = new AuthorizationClient();
     _loggerService         = new LoggerService();
 }
        protected async Task ConfirmDelete_Click(bool deleteConfirmed)
        {
            if (deleteConfirmed)
            {
                await ClaimService.DeleteClaim(ClaimId);

                NavigationManager.NavigateTo("/", true);
            }
        }
示例#15
0
        public void GivenParseEmail_WhenEmailContainsValidDate_ThenValueIsReturned(string fileName)
        {
            string textFromFile = File.ReadAllText(fileName);
            var    claim        = new ClaimService().ParseClaim(textFromFile);
            var    expectedDT   = new DateTime(2017, 4, 25);

            //DateTime.TryParse(expected, out expectedDT);
            Assert.Equal(expectedDT, claim.Event.Date);
        }
示例#16
0
        public ActionResult <Expense> Get(string emailBody)
        {
            EmailContent emailContent = new EmailContent();

            emailContent.EmailBody = emailBody;
            ClaimService service = new ClaimService();

            return(service.calculateExpenses(emailContent));
        }
示例#17
0
        public void GetAllResolvedClaimsShouldReturnEmptyListOnEmptyRepository()
        {
            var repository = new Mock <IDeletableEntityRepository <InsuranceClaim> >();

            repository.Setup(r => r.All()).Returns(new List <InsuranceClaim>().AsQueryable());
            var service = new ClaimService(repository.Object);

            Assert.Equal(0, service.GetAllResolvedClaims().Count);
        }
示例#18
0
        public void GetMyPendingClaimsShouldReturnEmptyListOnEmptyRepository()
        {
            var repository = new Mock <IDeletableEntityRepository <InsuranceClaim> >();

            repository.Setup(r => r.All()).Returns(new List <InsuranceClaim>().AsQueryable());
            var    service = new ClaimService(repository.Object);
            string agentId = "test";

            Assert.Equal(0, service.GetMyPendingClaims(agentId).Count);
        }
示例#19
0
        public void GetByIdShouldReturnNullOnEmptyCollection()
        {
            var repository = new Mock <IDeletableEntityRepository <InsuranceClaim> >();

            repository.Setup(r => r.All()).Returns(new List <InsuranceClaim>().AsQueryable());
            var service  = new ClaimService(repository.Object);
            int randomId = 1;

            Assert.Null(service.GetById(randomId));
        }
示例#20
0
        protected async Task Edit_Click(int InputId, int b)
        {
            CreateEditMode = true;
            Claim          = await ClaimService.GetClaimById(InputId);

            Mapper.Map(Claim, ClaimEditModel);
            RequesterComments = Claim.RequesterComments;
            ApproverComments  = Claim.ApproverComments;
            FinanceComments   = Claim.FinanceComments;
        }
示例#21
0
        protected override async Task OnInitializedAsync()
        {
            CreateEditMode = false;
            ClaimEditModel = new ClaimEditModel();
            Claims         = (await ClaimService.GetClaims()).ToList();

            //Categories = (await CategoryService.GetCategories()).ToList();
            //CategoryId = Claim.CategoryId.ToString();
            //Currencies = (await CurrencyService.GetCurrencies()).ToList();
            //CurrencyId = Claim.CurrencyId.ToString();
        }
        public ClaimService Save(ClaimService claimService)
        {
            if (claimService.ClaimServiceID == 0)
            {
                claimRulerDBContext.ClaimService.Add(claimService);
            }

            claimRulerDBContext.SaveChanges();

            return(claimService);
        }
 public ClaimsController(ApplicationDbContext context, CarrierService carrierService, ILogger <ClaimsController> logger,
                         ClaimService claimService,
                         IConfiguration configuration
                         )
 {
     _context        = context;
     _carrierService = carrierService;
     _logger         = logger;
     _claimService   = claimService;
     _configuration  = configuration;
 }
示例#24
0
        public void CheckCreatorShouldReturnFalseOnEmptyRepository()
        {
            var repository = new Mock <IDeletableEntityRepository <InsuranceClaim> >();

            repository.Setup(r => r.All()).Returns(new List <InsuranceClaim>().AsQueryable());
            var    service       = new ClaimService(repository.Object);
            string randomUserId  = "testId";
            int    randomClaimId = 1;

            Assert.False(service.CheckCreator(randomUserId, randomClaimId));
        }
示例#25
0
        public async Task CountOfClaimsByCarrierId_91111_ShouldReturns(string carrierId, int expectedCount)
        {
            var context = GenerateDbContext();
            var service = new ClaimService(context);

            var model = new ClaimsViewModel {
                CarrierId = carrierId
            };

            var claims = await service.GetFilteredClaimsAsync(model);

            Assert.Equal(expectedCount, claims.Count);
        }
示例#26
0
        public async Task CountOfClaimsByCarrierId_ShouldReturns2()
        {
            var context = GenerateDbContext();
            var service = new ClaimService(context);

            var model = new ClaimsViewModel {
                CarrierId = "94637"
            };

            var claims = await service.GetFilteredClaimsAsync(model);

            Assert.Equal(2, claims.Count);
        }
示例#27
0
        public void GetReturnsNotFound()
        {
            // Arrange
            var mockRepository = new Mock <IClaimRepository>();
            var service        = new ClaimService(mockRepository.Object);
            var controller     = new ClaimController(service);

            // Act
            IHttpActionResult actionResult = controller.GetClaimByClaimNo("test");

            // Assert
            Assert.IsInstanceOfType(actionResult, typeof(NotFoundResult));
        }
        protected ImageConverter _imageConverter;// = new ImageConverter();

        protected override async Task OnInitializedAsync()
        {
            Claim = await ClaimService.GetClaimById(int.Parse(Id));

            var authenticationState     = await((CustomAuthenticationStateProvider)AuthenticationStateProvider).GetAuthenticationStateAsync();
            var AuthenticationStateUser = authenticationState.User;

            Name = AuthenticationStateUser.Claims.Where(x => x.Type.Equals("email")).FirstOrDefault().Value;
            if (Name == null)
            {
                Name = (await authenticationStateTask).User.Claims.Where(x => x.Type.Equals("email")).FirstOrDefault().Value;
            }

            if (!authenticationState.User.Identity.IsAuthenticated)
            {
                string returnUrl = WebUtility.UrlEncode($"/list");
                NavigationManager.NavigateTo($"/login?returnUrl={returnUrl}");
            }

            if (authenticationState.User.IsInRole("Admin"))
            {
                Role = "Admin";
            }
            else if (authenticationState.User.IsInRole("Finance"))
            {
                Role = "Finance";
            }
            else if (authenticationState.User.IsInRole("Approver"))
            {
                Role = "Approver";
            }
            else if (authenticationState.User.IsInRole("Basic"))
            {
                Role = "Basic";
            }

            foreach (var LineItem in Claim.LineItems)
            {
                if (LineItem.Receipt != null)
                {
                    imageDataUrls.Clear();
                    var format       = "image/png";
                    var imageDataUrl = $"data:{format};base64,{Convert.ToBase64String(LineItem.Receipt)}";
                    imageDataUrls.Add(imageDataUrl);
                    LineItemImageModel Lim = new LineItemImageModel {
                        Id = LineItem.Id, ImageDataUrls = imageDataUrls.ToList()
                    };
                    LineItemImageModels.Add(Lim);
                }
            }
        }
示例#29
0
        public async Task DeleteShouldDoNothingOnEmptyCollection()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "MyTestDb7")
                          .Options;
            var dbContext = new ApplicationDbContext(options);

            var repository = new EfDeletableEntityRepository <InsuranceClaim>(dbContext);
            var service    = new ClaimService(repository);
            int randomId   = 1;
            await service.Delete(randomId);

            Assert.Equal(0, repository.All().Count());
        }
示例#30
0
        public void CreateMethodReturnsBadRequest()
        {
            // Arrange
            var mockRepository = new Mock <IClaimRepository>();

            var service    = new ClaimService(mockRepository.Object);
            var controller = new ClaimController(service);

            // Act
            IHttpActionResult actionResult = controller.CreateClaim(null);

            // Assert
            Assert.IsInstanceOfType(actionResult, typeof(BadRequestResult));
        }
        public void Delete(int id)
        {
            // Create an entity to represent the Entity you wish to delete
            // Notice you don't need to know all the properties, in this
            // case just the ID will do.
            ClaimService claimService = new ClaimService { ClaimServiceID = id };

            // Now attach the category stub object to the "Categories" set.
            // This puts the Entity into the context in the unchanged state,
            // This is same state it would have had if you made the query
            DbContextHelper.DbContext.AttachTo("ClaimServices", claimService);

            // Do the delete the category
            DbContextHelper.DbContext.ClaimService.Remove(claimService);

            // Apply the delete to the database
            DbContextHelper.DbContext.SaveChanges();
        }
        public static string SaveNotes(int claimID, string serviceQty, string serviceDate, string descp, string invoiceServiceType, int invoiceServiceTypeId, string serviceAdjuster, string serviceAdjustId, int leadID, string emailTo)
        {
            string json = "";
            ClaimService claimService = null;
            ClaimComment diary = null;
            Leads objLeads = null;
            Claim objClaim = null;
            int userID = SessionHelper.getUserId();

            try
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    using (ClaimServiceManager repository = new ClaimServiceManager())
                    {
                        claimService = new ClaimService();
                        claimService.ClaimID = claimID;

                        claimService.ServiceQty = serviceQty == null ? 0 : Convert.ToDecimal(serviceQty);
                        claimService.ServiceDate = Convert.ToDateTime(serviceDate);
                        claimService.ServiceDescription = descp.Trim();
                        claimService.ServiceTypeID = Convert.ToInt32(invoiceServiceTypeId);
                        claimService.UserID = userID;
                        claimService.AdjusterID = Convert.ToInt32(serviceAdjustId);

                        claimService = repository.Save(claimService);
                    }

                    // diary
                    diary = new ClaimComment();
                    diary.ClaimID = claimID;
                    diary.CommentDate = DateTime.Now;
                    diary.UserId = userID;
                    diary.ActivityType = "Service: " + invoiceServiceType;
                    diary.CommentText = string.Format("Description: {0}, Date {1:MM/dd/yyyy h:mm}, Qty: {2:N2}, Adjuster: {3}",
                                                claimService.ServiceDescription,
                                                claimService.ServiceDate,
                                                claimService.ServiceQty,
                                                serviceAdjuster
                                                );
                    ClaimCommentManager.Save(diary);

                    scope.Complete();
                    //  SendNoteEmail();
                }
                objLeads = LeadsManager.GetByLeadId(leadID);
                ClaimManager objClaimManager = new ClaimManager();
                objClaim = objClaimManager.Get(claimID);
                string insuerFileId = objClaim.InsurerClaimNumber;
                string insurerName = objLeads.InsuredName;
                string claimNumber = objClaim.AdjusterClaimNumber;
                string userName = SessionHelper.getUserName();
                SendNoteEmail(insuerFileId, insurerName, claimNumber, serviceAdjuster, descp.Trim(), userName, emailTo, serviceDate, serviceQty);

                json = "Service save successfully";

            }
            catch (Exception ex)
            {
                Core.EmailHelper.emailError(ex);
            }

            return json;
        }
        //EMAIL TO: Specified User
        private void notifySpecifiedUser(AdjusterMaster adjuster, ClaimService service, Claim myClaim)
        {
            StringBuilder emailBody = new StringBuilder();
            string password = null;
            string[] recipients = null;
            string smtpHost = null;
            int smtpPort = 0;
            string siteUrl = ConfigurationManager.AppSettings["siteUrl"].ToString();
            string insuredName = Session["InsuredName"].ToString();
            string subject = "Claim # " + myClaim.InsurerClaimNumber + ", Please Read Claim Note, Claim Ruler Note for : " + insuredName;
            CRM.Data.Entities.SecUser user = null;

            string itsgHost = ConfigurationManager.AppSettings["smtpHost"].ToString();
            string itsgHostPort = ConfigurationManager.AppSettings["smtpPort"].ToString();
            string itsgEmail = ConfigurationManager.AppSettings["smtpEmail"].ToString();
            string itsgEmailPassword = ConfigurationManager.AppSettings["smtpPassword"].ToString();

            string EmailService = ddlInvoiceServiceType.SelectedItem.Text;
            string EmailActivity = ddlActivity.SelectedItem.Text;
            string EmailDescription = txtServiceDescription.Text;
            string EmailInternal = txtMyComments.Text;
            string EmailQuantity = txtServiceQty.Text;
            string EmailDate = txtServiceDate.Text;
            string userName = SessionHelper.getUserName();

            int.TryParse(itsgHostPort, out smtpPort);

            // get logged in user
            int userID = SessionHelper.getUserId();
            //Convert.ToInt32(itsgHostPort);
            // get current user email info
            user = SecUserManager.GetByUserId(userID);

            // load email credentials
            smtpHost = user.emailHost;
            int.TryParse(user.emailHostPort, out smtpPort);

            // recipients
            recipients = new string[] { txtEmailTo.Text };

            // build email body
            // .containerBox
            emailBody.Append("<div style=\"margin:auto;width:600px;border: 1px solid #DDDDE4; margin: auto;font-family: Tahoma, Arial,sans-serif;font-size: 12px;color: #808080;\">");

            // .header
            //emailBody.Append("<div style=\"background-image:url(https://appv3.claimruler.com/images/email_header_small.jpg);background-repeat: no-repeat;background-size: 100% 100%;height:70px;\"></div>");
            //emailBody.Append("<div><img src=\"http://app.claimruler.com/images/email_header_small.jpg\"></image></div>");

            // .paneContentInner
            emailBody.Append("<div style=\"margin: 20px;\">");
            emailBody.Append("Hi " + adjuster.adjusterName + ",<br><br>");
            emailBody.Append("The following activity was just logged on Claim # " + myClaim.InsurerClaimNumber + " for Insured: " + insuredName + "<br><br><br>");

            emailBody.Append("<table >");
            emailBody.Append("<tr> ");
            emailBody.Append("<td align=\"left\"><b>Service:</b></td><td align=\"left\"> " + EmailService + "</td>");
            emailBody.Append("</tr>");
            // emailBody.Append("</table><br><br>");

            emailBody.Append("<tr>");
            emailBody.Append("<td align=\"left\"><b>Activity:</b></td><td align=\"left\"> " + EmailActivity + "</td>");
            emailBody.Append("</tr>");

            emailBody.Append("<tr> ");
            emailBody.Append("<td align=\"left\"><b>Description:</b></td><td align=\"left\"> " + EmailDescription + "</td>");
            emailBody.Append("</tr>");

            emailBody.Append("<tr> ");
            emailBody.Append("<td align=\"left\"><b>Internal Comments:</b></td><td align=\"left\"> " + EmailInternal + "</td>");
            emailBody.Append("</tr>");

            emailBody.Append("<tr></tr>");

            emailBody.Append("<tr> ");
            emailBody.Append("<td align=\"left\"><b>Adjuster:</b></td><td align=\"left\"> " + adjuster.adjusterName + "</td>");
            emailBody.Append("</tr>");

            emailBody.Append("<tr> ");
            emailBody.Append("<td align=\"left\"><b>User Name:</b></td><td align=\"left\"> " + userName + "</td>");
            emailBody.Append("</tr>");

            emailBody.Append("<tr> ");
            emailBody.Append("<td align=\"left\"><b>Service Date:</b></td><td align=\"left\"> " + EmailDate + "</td>");
            emailBody.Append("</tr>");

            emailBody.Append("<tr> ");
            emailBody.Append("<td align=\"left\"><b>Timer Quantity:</b></td><td align=\"left\"> " + EmailQuantity + "</td>");
            emailBody.Append("</tr>");

            emailBody.Append("</table ><br><br>");

            emailBody.Append("</div>");	// inner containerBox
            emailBody.Append("</div>");	// paneContentInner
            emailBody.Append("</div>");	// containerBox

            //Core.EmailHelper.sendEmail(user.Email, recipients, null, "Claim Assignment Notification", emailBody.ToString(), null, user.emailHost, smtpPort, smtpEmail, smtpPassword, true);
            password = Core.SecurityManager.Decrypt(user.emailPassword);

            //Core.EmailHelper.sendEmail(user.Email, recipients, null, subject, emailBody.ToString(), null, user.emailHost, smtpPort, user.Email, password, user.isSSL ?? true);
            Core.EmailHelper.sendEmail(itsgEmail, recipients, null, subject, emailBody.ToString(), null, itsgHost, Convert.ToInt32(itsgHostPort), itsgEmail, itsgEmailPassword);
        }
        protected void btnSaveClaimService_Click(object sender, EventArgs e)
        {
            ClaimService claimService = null;
            ClaimComment diary = null;
            AdjusterMaster adjuster = null;
            Claim myClaim = null;
            CarrierInvoiceProfile CarrierInvoice = null;

            int userID = SessionHelper.getUserId();
            int claimID = SessionHelper.getClaimID();
            int id = 0;
            int myAdjusterID = 0;
            int profileID = 0;

            Page.Validate("service");
            if (!Page.IsValid)
                return;

            id = Convert.ToInt32(ViewState["ClaimServiceID"]);

            //Get current claim info to pass through to emails
            ClaimManager cm = new ClaimManager();
            myClaim =  cm.Get(claimID);

            //AdjusterManager

            try {
                using (TransactionScope scope = new TransactionScope())
                {
                    using (ClaimServiceManager repository = new ClaimServiceManager())
                    {
                        if (id == 0)
                        {
                            claimService = new ClaimService();
                            claimService.ClaimID = claimID;
                        }
                        else
                        {
                            claimService = repository.Get(id);
                        }

                        claimService.ServiceQty = this.txtServiceQty.Value == null ? 0 : Convert.ToDecimal(txtServiceQty.Value);
                        claimService.ServiceDate = txtServiceDate.Date;
                        claimService.ServiceDescription = txtServiceDescription.Text.Trim();
                        claimService.ServiceTypeID = Convert.ToInt32(this.ddlInvoiceServiceType.SelectedValue);
                        claimService.UserID = userID;
                        claimService.AdjusterID = Convert.ToInt32(hf_serviceAdjusterID.Value);
                        claimService.Activity = ddlActivity.SelectedItem.Text;
                        claimService.InternalComments = txtMyComments.Text.Trim();
                        claimService.IsBillable = cbIsBillable.Checked;
                        claimService.Billed = false;
                        //save to db
                        claimService = repository.Save(claimService);

                        //string EmailService = ddlInvoiceServiceType.SelectedItem.Text;
                        //string EmailActivity = ddlActivity.SelectedItem.Text;
                        //string EmailDescription = txtServiceDescription.Text;
                        //string EmailInternal = txtMyComments.Text;
                        //string EmailQuantity = txtServiceQty.Text;
                        //string EmailDate = txtServiceDate.Text;

                    }

                    // diary
                    diary = new ClaimComment();
                    diary.ClaimID = claimID;
                    diary.CommentDate = DateTime.Now;
                    diary.UserId = userID;
                    diary.ActivityType = ddlActivity.SelectedItem.Text;
                    diary.InternalComments = txtMyComments.Text.Trim();
                    diary.CommentText = string.Format("Service: {0}, Description: {1}, Date {2:MM/dd/yyyy}, Qty: {3:N2}, Adjuster: {4}",
                                                ddlInvoiceServiceType.SelectedItem.Text,
                                                claimService.ServiceDescription,
                                                claimService.ServiceDate,
                                                claimService.ServiceQty,
                                                txtServiceAdjuster.Text
                                                );
                    ClaimCommentManager.Save(diary);

                    myAdjusterID = Convert.ToInt32(claimService.AdjusterID); //Convert.ToInt32(myClaim.AdjusterID);

                    //EMAIL ADJUSTER OC 10/21/2014
                    if (myAdjusterID != 0 || myAdjusterID != null)
                    {
                        adjuster = AdjusterManager.GetAdjusterId(myAdjusterID);
                    }
                    if (cbEmailAdjuster.Checked == true)
                    {
                        try
                        {
                            notifyAdjuster(adjuster, claimService, myClaim);
                        }
                        catch (Exception ex)
                        {
                            lblMessage.Text = "Unable to send email to adjuster";
                            lblMessage.CssClass = "error";
                        }
                    }
                    //EMAIL CLIENT CONTACT OC 10/22/2014
                    if (cbEmailClient.Checked == true) //Dont need to check if invoice Pro ID is empty becuase to get to this point, one has to exist already
                    {
                        if (Session["ComingFromAllClaims"] != null) //if the user got here straight from the all claims screen
                        {
                            profileID = Convert.ToInt32(Session["CarrierInvoiceID"]);
                        }
                        else//coming from claim detail page
                        {
                            profileID = Convert.ToInt32(Session["InvoiceProfileID"]);
                        }
                        CarrierInvoice = CarrierInvoiceProfileManager.Get(profileID);
                        try
                        {
                            notifyClientContact(CarrierInvoice, claimService, myClaim, adjuster);
                        }
                        catch (Exception ex)
                        {
                            lblMessage.Text = "Unable to send email to client contact";
                            lblMessage.CssClass = "error";
                        }

                    }
                    //EMAIL TO WHOMEVER
                    if(txtEmailTo.Text != "")
                    {

                        try
                        {
                            notifySpecifiedUser(adjuster, claimService, myClaim);
                        }
                        catch (Exception ex)
                        {
                            lblMessage.Text = "Unable to send email to adjuster";
                            lblMessage.CssClass = "error";
                        }
                    }

                    scope.Complete();

                }

                lblMessage.Text = "Service was saved successfully.";
                lblMessage.CssClass = "ok";

                // keep edit form active
                lbtnNewClaimService_Click(null, null);

                // refresh grid
                gvClaimService.DataSource = loadClaimServices(claimID);
                gvClaimService.DataBind();

            }
            catch (Exception ex)
            {
                Core.EmailHelper.emailError(ex);

                lblMessage.Text = "Unable to save claim service.";
                lblMessage.CssClass = "error";
            }
            //send email to adjuster
        }
        public ClaimService Save(ClaimService claimService)
        {
            if (claimService.ClaimServiceID == 0)
                claimRulerDBContext.ClaimService.Add(claimService);

            claimRulerDBContext.SaveChanges();

            return claimService;
        }