Пример #1
0
 public virtual void OnCollision(IncidentInfo msg)
 {
 }
        public async Task <HttpResponseMessage> UpdatePayment(IncidentPaymentRequest paymentRequest)
        {
            Services.Log.Info("Incident Payment Update Request [API]");
            string responseText;

            stranddContext context = new stranddContext();

            //Retrieve Incident
            Incident updateIncident = await(from r in context.Incidents where (r.Id == paymentRequest.IncidentGUID) select r).FirstOrDefaultAsync();

            //Find the Incident to Edit and return Bad Response if not found
            if (updateIncident != null)
            {
                string guidnew = Guid.NewGuid().ToString();
                //Check for Submitted Payment Amount
                Payment newPayment = new Payment
                {
                    Id = guidnew,
                    PaymentPlatform   = paymentRequest.PaymentMethod,
                    PlatformPaymentID = guidnew,
                    Amount            = paymentRequest.PaymentAmount,
                    Fees               = -1,
                    ProviderUserID     = IncidentInfo.GetProviderID(paymentRequest.IncidentGUID),
                    Status             = "Admin-Entered",
                    BuyerName          = "NONE",
                    BuyerEmail         = "NONE",
                    BuyerPhone         = "NONE",
                    Currency           = "INR",
                    AuthenticationCode = "NONE",
                    IncidentGUID       = paymentRequest.IncidentGUID
                };

                if (paymentRequest.PaymentMethod == "PAYMENT-CASH")
                {
                    newPayment.PaymentPlatform = "Cash Payment (Admin)";
                    newPayment.Status          = "Paid";
                }

                if (paymentRequest.PaymentMethod == "PAYMENT-FAIL")
                {
                    newPayment.PaymentPlatform = "Payment Failure (Admin)";
                    newPayment.Status          = "FAILED";
                }

                if (paymentRequest.PaymentAmount == 0)
                {
                    newPayment.Amount = -1;
                }

                //Save record
                context.Payments.Add(newPayment);
                await context.SaveChangesAsync();

                responseText = "Incident [" + updateIncident.Id + "] Payment Status Updated";
                Services.Log.Info(responseText);

                //Notify Particular Connected User through SignalR
                IHubContext hubContext = Services.GetRealtime <IncidentHub>();
                hubContext.Clients.Group(updateIncident.ProviderUserID).updateMobileClientStatus(newPayment.GetCustomerPushObject());
                Services.Log.Info("Mobile Client [" + updateIncident.ProviderUserID + "] Status Update Payload Sent");

                //Web Client Notifications
                hubContext.Clients.All.saveNewPayment(newPayment);
                Services.Log.Info("Connected Clients Updated");

                //Return Successful Response
                return(this.Request.CreateResponse(HttpStatusCode.OK, responseText));
            }
            else
            {
                // Return Failed Response
                responseText = "Incident [" + paymentRequest.IncidentGUID + "] is not found in the system";
                Services.Log.Warn(responseText);
                return(this.Request.CreateResponse(HttpStatusCode.BadRequest, responseText));
            }
        }
Пример #3
0
 protected internal virtual void OnCollision(IncidentInfo msg)
 {
 }
        public static bool SendCurrentIncidentInvoiceEmail(Incident incident, ApiServices Services)
        {
            IncidentInfo invoiceIncident = new IncidentInfo(incident);

            if (invoiceIncident.PaymentAmount < invoiceIncident.ServiceFee)
            {
                SendGridMessage invoiceMessage = new SendGridMessage();

                invoiceMessage.From = SendGridHelper.GetAppFrom();
                invoiceMessage.AddTo(invoiceIncident.IncidentUserInfo.Email);
                invoiceMessage.Html    = " ";
                invoiceMessage.Text    = " ";
                invoiceMessage.Subject = "StrandD Invoice - Payment for Service Due";

                invoiceMessage.EnableTemplateEngine(WebConfigurationManager.AppSettings["RZ_InvoiceTemplateID"]);
                invoiceMessage.AddSubstitution("%invoicestub%", new List <string> {
                    invoiceIncident.IncidentGUID.Substring(0, 5).ToUpper()
                });
                invoiceMessage.AddSubstitution("%incidentguid%", new List <string> {
                    invoiceIncident.IncidentGUID
                });
                invoiceMessage.AddSubstitution("%name%", new List <string> {
                    invoiceIncident.IncidentUserInfo.Name
                });
                invoiceMessage.AddSubstitution("%phone%", new List <string> {
                    invoiceIncident.IncidentUserInfo.Phone
                });
                invoiceMessage.AddSubstitution("%email%", new List <string> {
                    invoiceIncident.IncidentUserInfo.Email
                });
                invoiceMessage.AddSubstitution("%jobdescription%", new List <string> {
                    invoiceIncident.JobCode
                });
                invoiceMessage.AddSubstitution("%servicefee%", new List <string> {
                    (invoiceIncident.ServiceFee - invoiceIncident.PaymentAmount).ToString()
                });
                invoiceMessage.AddSubstitution("%datesubmitted%", new List <string> {
                    DateTime.Now.ToShortDateString()
                });
                invoiceMessage.AddSubstitution("%datedue%", new List <string> {
                    (DateTime.Now.AddDays(30)).ToShortTimeString()
                });
                invoiceMessage.AddSubstitution("%servicepaymentlink%", new List <string> {
                    (WebConfigurationManager.AppSettings["RZ_ServiceBaseURL"].ToString() + "/view/customer/incidentpayment/" + invoiceIncident.IncidentGUID)
                });

                // Create an Web transport for sending email.
                var transportWeb = new Web(SendGridHelper.GetNetCreds());

                // Send the email.
                try
                {
                    transportWeb.Deliver(invoiceMessage);
                    Services.Log.Info("Incident Invoice Email Sent to [" + invoiceIncident.IncidentUserInfo.Email + "]");
                    return(true);
                }
                catch (InvalidApiRequestException ex)
                {
                    for (int i = 0; i < ex.Errors.Length; i++)
                    {
                        Services.Log.Error(ex.Errors[i]);
                        return(false);
                    }
                }
                return(false);
            }
            else
            {
                return(false);
            }
        }
Пример #5
0
        private void BindEmailValues()
        {
            EMailMessageInfo mi = EMailMessageInfo.Load(EMailMessageId);

            IncidentInfo incidentInfo = EMailIncidentMappingHandler.CreateMapping(EMailMessageId);

            // Eval IncidentBox
            ddlFolder.SelectedValue = IncidentBoxRule.Evaluate(incidentInfo).IncidentBoxId.ToString();

            txtTitle.Text       = incidentInfo.Title;
            ftbDescription.Text = incidentInfo.Description;
            CommonHelper.SafeSelect(ddlPriority, incidentInfo.PriorityId.ToString());
            CommonHelper.SafeSelect(ddlSeverity, incidentInfo.SeverityId.ToString());
            CommonHelper.SafeSelect(ddlType, incidentInfo.TypeId.ToString());
            ddProject.ObjectTypeId = (int)ObjectTypes.Project;
            ddProject.ObjectId     = incidentInfo.ProjectId;

            if (incidentInfo.GeneralCategories != null)
            {
                foreach (int CatId in incidentInfo.GeneralCategories)
                {
                    CommonHelper.SafeMultipleSelect(lbCategory, CatId.ToString());
                }
            }
            if (incidentInfo.IncidentCategories != null)
            {
                foreach (int CatId in incidentInfo.IncidentCategories)
                {
                    CommonHelper.SafeMultipleSelect(lbIncidentCategory, CatId.ToString());
                }
            }

            //try from MailSenderEmail
            PrimaryKeyId contactUid = PrimaryKeyId.Empty;
            PrimaryKeyId orgUid     = PrimaryKeyId.Empty;
            Client       client     = Common.GetClient(incidentInfo.MailSenderEmail);

            if (client != null)
            {
                if (client.IsContact)
                {
                    contactUid = client.Id;

                    ClientControl.ObjectType = ContactEntity.GetAssignedMetaClassName();
                    ClientControl.ObjectId   = contactUid;
                }
                else
                {
                    orgUid = client.Id;

                    ClientControl.ObjectType = OrganizationEntity.GetAssignedMetaClassName();
                    ClientControl.ObjectId   = orgUid;
                }
            }


            //from incidentinfo

            if (orgUid == PrimaryKeyId.Empty && contactUid == PrimaryKeyId.Empty)
            {
                if (incidentInfo.OrgUid != PrimaryKeyId.Empty)
                {
                    ClientControl.ObjectType = OrganizationEntity.GetAssignedMetaClassName();
                    ClientControl.ObjectId   = incidentInfo.OrgUid;
                }
                else if (incidentInfo.ContactUid != PrimaryKeyId.Empty)
                {
                    ClientControl.ObjectType = ContactEntity.GetAssignedMetaClassName();
                    ClientControl.ObjectId   = incidentInfo.ContactUid;
                }
            }

            trHtmlAttach.Visible = false;
            trEmail.Visible      = true;

            string sBody = "";

            if (mi.HtmlBody != null)
            {
                sBody = EMailMessageInfo.CutHtmlBody(mi.HtmlBody, 256, "...");
            }

            if (sBody.Trim() != "")
            {
                lblEmail.Text = String.Format("{0}<p align=right class='text'><a href=\"javascript:OpenSizableWindow('EMailView.aspx?EMailId={2}', 750, 550)\"><b>{1}</b></a>", sBody, LocRM4.GetString("More"), EMailMessageId);
            }
            else
            {
                lblEmail.Text = sBody;
            }
        }