Commit 506180cb authored by Sandeep Sagar Panjala's avatar Sandeep Sagar Panjala

initial commit

parent 8bf3ca87
namespace Hims.Api.Models.InternalMedicine
{
/// <summary>
/// The skin types.
/// </summary>
public class SkinTypes
{
/// <summary>
/// Gets or sets the type.
/// </summary>
public string Type { get; set; }
/// <summary>
/// Gets or sets the base 64 string.
/// </summary>
public string Base64String { get; set; }
/// <summary>
/// Gets or sets a value indicating whether edited.
/// </summary>
public bool Edited { get; set; }
}
}
\ No newline at end of file
namespace Hims.Api.Models.MailTemplates
{
/// <summary> The book appointment.</summary>
public class BookAppointment
{
/// <summary>
/// Gets or sets the full name.
/// </summary>
public string FullName { get; set; }
/// <summary>
/// Gets or sets the account name.
/// </summary>
public string AccountName { get; set; }
/// <summary>Gets or sets the doctor name.</summary>
public string DoctorName { get; set; }
/// <summary>Gets or sets the message.</summary>
public string Message { get; set; }
/// <summary>Gets or sets the appointment time.</summary>
public string AppointmentTime { get; set; }
/// <summary>
/// Gets or sets the ios app link.
/// </summary>
public string IOSAppLink { get; set; }
/// <summary>
/// Gets or sets the android app link.
/// </summary>
public string AndroidAppLink { get; set; }
/// <summary>
/// Gets or sets the mail templates images link.
/// </summary>
public string MailTemplatesImagesLink { get; set; }
}
}
namespace Hims.Api.Models.MailTemplates
{
/// <summary>
/// The create password.
/// </summary>
public class CreatePassword
{
/// <summary>
/// Gets or sets the full name.
/// </summary>
public string FullName { get; set; }
/// <summary>
/// Gets or sets the account name.
/// </summary>
public string AccountName { get; set; }
/// <summary>
/// Gets or sets the create password link.
/// </summary>
public string CreatePasswordLink { get; set; }
/// <summary>
/// Gets or sets the ios app link.
/// </summary>
public string IOSAppLink { get; set; }
/// <summary>
/// Gets or sets the android app link.
/// </summary>
public string AndroidAppLink { get; set; }
/// <summary>
/// Gets or sets the mail templates images link.
/// </summary>
public string MailTemplatesImagesLink { get; set; }
}
}
namespace Hims.Api.Models.MailTemplates
{
/// <summary>
/// The email OTP.
/// </summary>
public class EmailOTP
{
/// <summary>
/// Gets or sets the full name.
/// </summary>
public string FullName { get; set; }
/// <summary>
/// Gets or sets the OTP.
/// </summary>
public string OTP { get; set; }
/// <summary>
/// Gets or sets the account name.
/// </summary>
public string AccountName { get; set; }
/// <summary>
/// Gets or sets the email.
/// </summary>
public string Email { get; set; }
/// <summary>
/// Gets or sets the ios app link.
/// </summary>
public string IOSAppLink { get; set; }
/// <summary>
/// Gets or sets the android app link.
/// </summary>
public string AndroidAppLink { get; set; }
/// <summary>
/// Gets or sets the mail templates images link.
/// </summary>
public string MailTemplatesImagesLink { get; set; }
/// <summary>
/// Gets or sets the mobile.
/// </summary>
public string Mobile { get; set; }
/// <summary>
/// Gets or sets the description.
/// </summary>
public string Description { get; set; }
/// <summary>
/// Gets or sets the username.
/// </summary>
public string UserName { get; set; }
}
}
namespace Hims.Api.Models.MailTemplates
{
/// <summary>
/// The payout smart send.
/// </summary>
public class PayoutSmartSend
{
/// <summary>
/// Gets or sets the full name.
/// </summary>
public string FullName { get; set; }
/// <summary>
/// Gets or sets the account name.
/// </summary>
public string AccountName { get; set; }
/// <summary>
/// Gets or sets the reset password link.
/// </summary>
public string PaymentLink { get; set; }
/// <summary>
/// Gets or sets the ios app link.
/// </summary>
public string IOSAppLink { get; set; }
/// <summary>
/// Gets or sets the android app link.
/// </summary>
public string AndroidAppLink { get; set; }
/// <summary>
/// Gets or sets the mail templates images link.
/// </summary>
public string MailTemplatesImagesLink { get; set; }
}
}
namespace Hims.Api.Models.MailTemplates
{
/// <summary>
/// The reject provider.
/// </summary>
public class RejectProvider
{
/// <summary>
/// Gets or sets the full name.
/// </summary>
public string FullName { get; set; }
/// <summary>
/// Gets or sets the rejected comments.
/// </summary>
public string RejectedComments { get; set; }
/// <summary>
/// Gets or sets the account name.
/// </summary>
public string AccountName { get; set; }
/// <summary>
/// Gets or sets the ios app link.
/// </summary>
public string IOSAppLink { get; set; }
/// <summary>
/// Gets or sets the android app link.
/// </summary>
public string AndroidAppLink { get; set; }
/// <summary>
/// Gets or sets the mail templates images link.
/// </summary>
public string MailTemplatesImagesLink { get; set; }
}
}
namespace Hims.Api.Models.MailTemplates
{
/// <summary>
/// The reset password.
/// </summary>
public class ResetPassword
{
/// <summary>
/// Gets or sets the full name.
/// </summary>
public string FullName { get; set; }
/// <summary>
/// Gets or sets the account name.
/// </summary>
public string AccountName { get; set; }
/// <summary>
/// Gets or sets the reset password link.
/// </summary>
public string ResetPasswordLink { get; set; }
/// <summary>
/// Gets or sets the ios app link.
/// </summary>
public string IOSAppLink { get; set; }
/// <summary>
/// Gets or sets the android app link.
/// </summary>
public string AndroidAppLink { get; set; }
/// <summary>
/// Gets or sets the mail templates images link.
/// </summary>
public string MailTemplatesImagesLink { get; set; }
}
}
#nullable enable
namespace Hims.Api.Models.MailTemplates
{
using System;
using System.Collections.Generic;
using Hims.Shared.EntityModels;
/// <summary>
/// The tickets.
/// </summary>
public class Tickets
{
/// <summary>
/// Gets or sets the ticket number.
/// </summary>
public string? TicketNumber { get; set; }
/// <summary>
/// Gets or sets the priority.
/// </summary>
public string? Priority { get; set; }
/// <summary>
/// Gets or sets the issue with.
/// </summary>
public string? IssueWith { get; set; }
/// <summary>
/// Gets or sets the description.
/// </summary>
public string? Description { get; set; }
/// <summary>
/// Gets or sets the raised by name.
/// </summary>
public string? RaisedByName { get; set; }
/// <summary>
/// Gets or sets the mobile.
/// </summary>
public string? Mobile { get; set; }
/// <summary>
/// Gets or sets the status.
/// </summary>
public string? Status { get; set; }
/// <summary>
/// Gets or sets the assignee name.
/// </summary>
public string? AssigneeName { get; set; }
/// <summary>
/// Gets or sets the ticket owner.
/// </summary>
public string? TicketOwner { get; set; }
/// <summary>
/// Gets or sets the created date.
/// </summary>
public DateTime? CreatedDate { get; set; }
/// <summary>
/// Gets or sets the raised by role.
/// </summary>
public string? RaisedByRole { get; set; }
/// <summary>
/// Gets or sets the ios app link.
/// </summary>
public string IOSAppLink { get; set; }
/// <summary>
/// Gets or sets the android app link.
/// </summary>
public string AndroidAppLink { get; set; }
/// <summary>
/// Gets or sets the mail templates images link.
/// </summary>
public string MailTemplatesImagesLink { get; set; }
/// <summary>
/// Gets or sets the support users.
/// </summary>
public IEnumerable<AccountModel> SupportUsers { get; set; }
/// <summary>
/// Gets or sets the email type.
/// </summary>
public string EmailType { get; set; }
}
}
namespace VirtualSteth.Api.Models.MailTemplates
{
/// <summary> The book appointment.</summary>
public class VideoConferenceLink
{
/// <summary>
/// Gets or sets the full name.
/// </summary>
public string FullName { get; set; }
/// <summary>
/// Gets or sets the account name.
/// </summary>
public string AccountName { get; set; }
/// <summary>Gets or sets the doctor name.</summary>
public string DoctorName { get; set; }
/// <summary>Gets or sets the message.</summary>
public string Message { get; set; }
/// <summary>Gets or sets the appointment time.</summary>
public string AppointmentTime { get; set; }
/// <summary>
/// Gets or sets the video link.
/// </summary>
public string VideoLink { get; set; }
/// <summary>
/// Gets or sets the ios app link.
/// </summary>
public string IOSAppLink { get; set; }
/// <summary>
/// Gets or sets the android app link.
/// </summary>
public string AndroidAppLink { get; set; }
/// <summary>
/// Gets or sets the mail templates images link.
/// </summary>
public string MailTemplatesImagesLink { get; set; }
}
}
namespace Hims.Api.Models.MailTemplates
{
/// <summary>
/// The welcome.
/// </summary>
public class Welcome
{
/// <summary>
/// Gets or sets the full name.
/// </summary>
public string FullName { get; set; }
/// <summary>
/// Gets or sets the account name.
/// </summary>
public string AccountName { get; set; }
/// <summary>
/// Gets or sets the website link.
/// </summary>
public string GetStartedLink { get; set; }
/// <summary>
/// Gets or sets the ios app link.
/// </summary>
public string IOSAppLink { get; set; }
/// <summary>
/// Gets or sets the android app link.
/// </summary>
public string AndroidAppLink { get; set; }
/// <summary>
/// Gets or sets the mail templates images link.
/// </summary>
public string MailTemplatesImagesLink { get; set; }
}
}
#nullable enable
namespace Hims.Api.Models.Patient
{
using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Http;
using Shared.EntityModels;
/// <summary>
/// The modify patient request.
/// </summary>
public class BabyregistrationRequest
{
/// <summary>
/// Gets or sets the patient id.
/// </summary>
public int PatientId { get; set; }
/// <summary>
/// Gets or sets the location identifier.
/// </summary>
/// <value>
/// The location identifier.
/// </value>
public int? LocationId { get; set; }
/// <summary>
/// Gets or sets the emergency contacts.
/// </summary>
public List<PatientEmergencyModel>? EmergencyContacts { get; set; }
/// <summary>
/// Gets or sets the insurances.
/// </summary>
public List<PatientInsuranceModel>? Insurances { get; set; }
/// <summary>
/// Gets or sets the relative details.
/// </summary>
public List<PatientFamilyModel>? RelativeDetails { get; set; }
public List<ModifyPatientRequest> BabyDetails { get; set; }
public string BabyData { get; set; }
}
}
\ No newline at end of file
namespace Hims.Api.Models.Patient
{
/// <summary>
/// The find patient request.
/// </summary>
public class EncryptedIdRequest
{
/// <summary>
/// Gets or sets the encrypted patient ID.
/// </summary>
public string? EncryptedId { get; set; }
public int? Id { get; set; }
}
}
\ No newline at end of file
namespace Hims.Api.Models.Patient
{
/// <summary>
/// The find patient request.
/// </summary>
public class FindPatientRequest
{
/// <summary>
/// Gets or sets the encrypted patient ID.
/// </summary>
public string EncryptedPatientId { get; set; }
}
}
#nullable enable
namespace Hims.Api.Models.Patient
{
using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Http;
using Shared.EntityModels;
/// <summary>
/// The modify patient request.
/// </summary>
public class ModifyPatientRequest
{
/// <summary>
/// Gets or sets the patient id.
/// </summary>
public int PatientId { get; set; }
/// <summary>
/// Gets or sets the salutation.
/// </summary>
public string? Salutation { get; set; }
/// <summary>
/// Gets or sets from.
/// </summary>
/// <value>
/// From.
/// </value>
public string? From { get; set; }
/// <summary>
/// Gets or sets the first name.
/// </summary>
public string FirstName { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the middle name.
/// </summary>
public string? MiddleName { get; set; }
/// <summary>
/// Gets or sets the last name.
/// </summary>
public string LastName { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the father or husband.
/// </summary>
public string FatherOrHusband { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the full name.
/// </summary>
public string FullName { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the full name.
/// </summary>
public string AadharNo { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the date of birth.
/// </summary>
public string? DateOfBirth { get; set; }
/// <summary>
/// Gets or sets the age.
/// </summary>
public short? Age { get; set; }
/// <summary>
/// Gets or sets the gender.
/// </summary>
public char? Gender { get; set; }
/// <summary>
/// Gets or sets the email.
/// </summary>
public string Email { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the mobile.
/// </summary>
public string Mobile { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the street address.
/// </summary>
public string? StreetAddress { get; set; }
/// <summary>
/// Gets or sets the address line 2.
/// </summary>
public string? AddressLine2 { get; set; }
/// <summary>
/// Gets or sets the city.
/// </summary>
public string? City { get; set; }
/// <summary>
/// Gets or sets the state.
/// </summary>
public string? State { get; set; }
/// <summary>
/// Gets or sets the Zipcode.
/// </summary>
public string? Zipcode { get; set; }
/// <summary>
/// Gets or sets the country id.
/// </summary>
/// public int CountryId { get; set; }
public int? CountryId { get; set; }
/// <summary>
/// Gets or sets the profile image url.
/// </summary>
public string? ProfileImageUrl { get; set; }
/// <summary>
/// Gets or sets the thumbnail url.
/// </summary>
public string? ThumbnailUrl { get; set; }
/// <summary>
/// Gets or sets the base 64 profile image.
/// </summary>
public string? Base64ProfileImage { get; set; }
/// <summary>
/// Gets or sets the password.
/// </summary>
public string? Password { get; set; }
/// <summary>
/// Gets or sets the created by.
/// </summary>
public int CreatedBy { get; set; }
/// <summary>
/// Gets or sets the modified by.
/// </summary>
public int? ModifiedBy { get; set; }
/// <summary>
/// Gets or sets the emergency contacts.
/// </summary>
public List<PatientEmergencyModel>? EmergencyContacts { get; set; }
/// <summary>
/// Gets or sets the insurances.
/// </summary>
public List<PatientInsuranceModel>? Insurances { get; set; }
/// <summary>
/// Gets or sets the relative details.
/// </summary>
public List<PatientFamilyModel>? RelativeDetails { get; set; }
/// <summary>
/// Gets or sets the referral code.
/// </summary>
public string? ReferralCode { get; set; }
/// <summary>
/// Gets or sets the referral code.
/// </summary>
public int? ReferralBy { get; set; }
/// <summary>
/// Gets or sets the RoleId.
/// </summary>
public short? RoleId { get; set; }
/// <summary>
/// Gets or sets the Created by name.
/// </summary>
public string? CreatedByName { get; set; }
/// <summary>
/// Gets or sets the Created by name.
/// </summary>
public string? ModifiedByName { get; set; }
/// <summary>
/// Gets or sets the Referred by.
/// </summary>
public string? ReferredBy { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public string? ReferredByName { get; set; }
/// <summary>
/// Gets or sets the location identifier.
/// </summary>
/// <value>
/// The location identifier.
/// </value>
public int? LocationId { get; set; }
/// <summary>
/// Gets or sets the HWC patient identifier.
/// </summary>
/// <value>
/// The HWC patient identifier.
/// </value>
public int? HWCPatientId { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public string? Education { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public string? Occupation { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public string? MaritalStatus { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public string? Religion { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public string? Nationality { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public string? RelationName { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public string? RelativeMobile { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public string? RelativeOccupation { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public string? RealtiveEducation { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public string? RelativeDateOfBirth { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public char? RelativeGender { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public string? Relation { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public int? PatientReferredById { get; set; }
/// <summary>
/// Gets or sets the Referred by name.
/// </summary>
public string? Name { get; set; }
/// <summary>
/// Gets or sets the id proof id identifier.
/// </summary>
/// <value>
/// The id proof id identifier.
/// </value>
public int? IdProofId { get; set; }
/// <summary>
/// Gets or sets the id proof value.
/// </summary>
public string? IdProofValue { get; set; }
/// <summary>
/// Gets or sets the Blood group
/// </summary>
public string? BloodGroup { get; set; }
/// <summary>
/// Gets or sets payment status.
/// </summary>
public bool? PaymentStatus { get; set; }
/// <summary>
/// Gets or sets payment number.
/// </summary>
public string? PaymentNumber { get; set; }
/// <summary>
/// Gets or sets the Pay type id from payType masters.
/// </summary>
public int? PayTypeId { get; set; }
/// <summary>
/// Gets or sets the amount.
/// </summary>
public decimal? Charges { get; set; }
/// <summary>
/// Gets or sets the amount.
/// </summary>
public decimal? Amount { get; set; }
/// <summary>
/// Gets or sets the id proof Number.
/// </summary>
public string? IdProofNo { get; set; }
/// <summary>
/// Gets or sets the id proof id identifier.
/// </summary>
/// <value>
/// The id proof id identifier.
/// </value>
public int? HowDidYouKnowId { get; set; }
/// <summary>
/// Gets or sets the id proof id identifier.
/// </summary>
/// <value>
/// The id proof id identifier.
/// </value>
public int? EducationId { get; set; }
/// <summary>
/// Gets or sets the id proof id identifier.
/// </summary>
/// <value>
/// The id proof id identifier.
/// </value>
public int? OccupationId { get; set; }
/// <summary>
/// Gets or sets the birthMark1.
/// </summary>
public string? BirthMark1 { get; set; }
/// <summary>
/// Gets or sets the birthMark1.
/// </summary>
public string? BirthMark2 { get; set; }
/// <summary>
/// Gets or sets the transaction id.
/// </summary>
public string? TransactionId { get; set; }
/// <summary>
/// Gets or sets the transaction.
/// </summary>
public string? Transaction { get; set; }
/// <summary>
/// Gets or sets the transaction id.
/// </summary>
public int? SalucroStatusCode { get; set; }
/// <summary>
/// Gets or sets the transaction id.
/// </summary>
public string? SalucroTransactionId { get; set; }
/// <summary>
/// Gets or sets the total.
/// </summary>
public decimal? TotalAmount { get; set; }
/// <summary>
/// Gets or sets payment status.
/// </summary>
public bool? IsUnidentified { get; set; }
/// <summary>
/// Gets or sets the type of the relation.
/// </summary>
/// <value>
/// The type of the relation.
/// </value>
public string? RelationType { get; set; }
/// <summary>
/// Gets or sets the occupation detail.
/// </summary>
/// <value>
/// The occupation detail.
/// </value>
public string? OccupationDetail { get; set; }
/// <summary>
/// Gets or sets the transaction id.
/// </summary>
public int? PaymentInitiationLogId { get; set; }
/// <summary>
/// Gets or sets payment status.
/// </summary>
public bool? SaveRelativeAsPatient { get; set; }
/// <summary>
/// Gets or sets payment status.
/// </summary>
public string? Relative { get; set; }
/// <summary>
/// Gets or sets the insurance id.
/// </summary>
public int? InsuranceId { get; set; }
/// <summary>
/// Gets or sets the insurance id.
/// </summary>
public int? ReferredByNameId { get; set; }
/// <summary>
/// Gets or sets the insurance id.
/// </summary>
public string? DocumentName { get; set; }
public IFormFileCollection? Files { get; set; } = null;
/// <summary>
/// Gets or sets the document type.
/// </summary>
public string? DocumentType { get; set; }
/// <summary>
/// Gets or sets the description.
/// </summary>
public string? Description { get; set; }
public List<String>? FilePaths { get; set; }
/// <summary>
/// Gets or sets the patient total.
/// </summary>
public decimal PatientTotal { get; set; }
public bool IsBabyRegistration { get; set; }
public int? ParentPatientId { get; set; }
/// <summary>
/// Get or sets the total.
/// </summary>
public decimal DiscountPerItem { get; set; }
/// <summary>
/// Get or sets the total.
/// </summary>
public decimal DiscountPerItemInRupees { get; set; }
/// <summary>
/// Gets or sets the admission time.
/// </summary>
public string? TimeOfBirth { get; set; }
}
}
\ No newline at end of file
#nullable enable
namespace Hims.Api.Models.Patient
{
using System.Collections.Generic;
using Hims.Shared.UserModels.Scan.ScanAppointment;
using Shared.EntityModels;
/// <summary>
/// The modify patient request.
/// </summary>
public class UpdatePatientMultipleForms
{
/// <summary>
/// Gets or sets the emergency contacts.
/// </summary>
public ModifyPatientRequest? PatientDetails { get; set; }
/// <summary>
/// Gets or sets the emergency contacts.
/// </summary>
public InsertBookScanAppointment? ScanAppointmentPayment { get; set; }
}
}
\ No newline at end of file
namespace Hims.Api.Models.Patient
{
/// <summary>
/// The update patient profile image request.
/// </summary>
public class UpdatePatientProfileImageRequest
{
/// <summary>
/// Gets or sets the patient id.
/// </summary>
public int PatientId { get; set; }
/// <summary>
/// Gets or sets the image.
/// </summary>
public string Image { get; set; }
}
}
#nullable enable
namespace Hims.Api.Models.Patient
{
/// <summary>
/// The patient upload document Request.
/// </summary>
public class UploadPatientDocumentRequest
{
/// <summary>
/// Gets or sets the uploaded by.
/// </summary>
public int UploadedBy { get; set; }
/// <summary>
/// Gets or sets the patient id.
/// </summary>
public int PatientId { get; set; }
/// <summary>
/// Gets or sets the patient document id.
/// </summary>
public int PatientDocumentId { get; set; }
/// <summary>
/// Gets or sets the document url.
/// </summary>
public string DocumentUrl { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the thumbnail url.
/// </summary>
public string ThumbnailUrl { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the document type.
/// </summary>
public string DocumentType { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the document name.
/// </summary>
public string DocumentName { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the content type.
/// </summary>
public string ContentType { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the size.
/// </summary>
public float Size { get; set; }
/// <summary>
/// Gets or sets the description.
/// </summary>
public string? Description { get; set; }
//===================================================
/// <summary>
/// Gets or sets the patient name.
/// </summary>
//public string? PatientName { get; set; }
/// <summary>
/// Gets or sets the uploaded by name.
/// </summary>
public string? UploadedByName { get; set; }
/// <summary>
/// Gets or sets the uploaded by role.
/// </summary>
//public string? UploadedByRole { get; set; }
/// <summary>
/// Gets or sets the uploaded date.
/// </summary>
// public UploadedDate { get; set; }
}
}
#nullable enable
namespace Hims.Api.Models.Patient
{
/// <summary>
/// The patient upload scan document Request.
/// </summary>
public class UploadPatientScanDocument
{
/// <summary>
/// Gets or sets the uploaded by.
/// </summary>
public int UploadedBy { get; set; }
/// <summary>
/// Gets or sets the book scan appointment id.
/// </summary>
public int BookScanAppointmentId { get; set; }
/// <summary>
/// Gets or sets the scan document id.
/// </summary>
public int ScanDocumentId { get; set; }
/// <summary>
/// Gets or sets the document url.
/// </summary>
public string? DocumentUrl { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the thumbnail url.
/// </summary>
public string? ThumbnailUrl { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the document name.
/// </summary>
public string? DocumentName { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the content type.
/// </summary>
public string? ContentType { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the size.
/// </summary>
public float Size { get; set; }
/// <summary>
/// Gets or sets the description.
/// </summary>
public string? Description { get; set; }
/// <summary>
/// Gets or sets the uploaded by name.
/// </summary>
public string? UploadedByName { get; set; }
/// <summary>
/// Gets or sets the login role id.
/// </summary>
public string? LoginRoleId { get; set; }
/// <summary>
/// Gets or sets the patient name.
/// </summary>
public string? PatientName { get; set; }
}
}
#nullable enable
namespace Hims.Api.Models.Patient
{
/// <summary>
/// The patient upload document Request.
/// </summary>
public class UploadPaymentDocumentRequest
{
/// <summary>
/// Gets or sets the uploaded by.
/// </summary>
public int UploadedBy { get; set; }
/// <summary>
/// Gets or sets the patient id.
/// </summary>
public int ProviderId { get; set; }
/// <summary>
/// Gets or sets the patient document id.
/// </summary>
public int PaymentDocumentId { get; set; }
/// <summary>
/// Gets or sets the document url.
/// </summary>
public string DocumentUrl { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the thumbnail url.
/// </summary>
public string ThumbnailUrl { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the document type.
/// </summary>
public string DocumentType { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the document name.
/// </summary>
public string DocumentName { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the content type.
/// </summary>
public string ContentType { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the size.
/// </summary>
public float Size { get; set; }
/// <summary>
/// Gets or sets the description.
/// </summary>
public string? Description { get; set; }
/// <summary>
/// Gets or sets the month.
/// </summary>
public string? Month { get; set; }
/// <summary>
/// Gets or sets the year.
/// </summary>
public string? Year { get; set; }
}
}
namespace Hims.Api.Models.Pharmacy
{
using Shared.EntityModels;
using Shared.UserModels;
/// <summary>
/// The pharmacy combined model.
/// </summary>
public class PharmacyCombinedModel
{
/// <summary>
/// Gets or sets the products.
/// </summary>
public ProductModel Products { get; set; }
/// <summary>
/// Gets or sets the stock.
/// </summary>
public PharmacyStockModel Stock { get; set; }
}
}
#nullable enable
namespace Hims.Api.Models.Practice
{
using System.Collections.Generic;
using Shared.EntityModels;
/// <summary>
/// The modify practice request.
/// </summary>
public class ModifyPracticeRequest
{
/// <summary>
/// Gets or sets the practice id.
/// </summary>
public int PracticeId { get; set; }
/// <summary>
/// Gets or sets the full name.
/// </summary>
public string FullName { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the practice type.
/// </summary>
public char PracticeType { get; set; }
/// <summary>
/// Gets or sets the tin.
/// </summary>
public string TIN { get; set; } = string.Empty;
/// <summary>
/// Gets or sets a value indicating whether active.
/// </summary>
public bool Active { get; set; }
/// <summary>
/// Gets or sets the created by.
/// </summary>
public int CreatedBy { get; set; }
/// <summary>
/// Gets or sets the modified by.
/// </summary>
public int ModifiedBy { get; set; }
/// <summary>
/// Gets or sets the locations.
/// </summary>
public List<PracticeLocationModel>? Locations { get; set; }
/// <summary>
/// Gets or sets the login role identifier.
/// </summary>
/// <value>
/// The login role identifier.
/// </value>
public short? LoginRoleId { get; set; }
/// <summary>
/// Gets or sets the name of the created by.
/// </summary>
/// <value>
/// The name of the created by.
/// </value>
public string ModifiedByName { get; set; }
}
}
#nullable enable
namespace Hims.Api.Models.Practice
{
using System.Collections.Generic;
using Shared.EntityModels;
/// <summary>
/// The practice registration request.
/// </summary>
public class PracticeRegistrationRequest
{
/// <summary>
/// Gets or sets the practice id.
/// </summary>
public int PracticeId { get; set; }
/// <summary>
/// Gets or sets the full name.
/// </summary>
public string FullName { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the practice type.
/// </summary>
public char PracticeType { get; set; }
/// <summary>
/// Gets or sets the tin.
/// </summary>
public string TIN { get; set; } = string.Empty;
/// <summary>
/// Gets or sets a value indicating whether active.
/// </summary>
public bool Active { get; set; }
/// <summary>
/// Gets or sets the created by.
/// </summary>
public int CreatedBy { get; set; }
/// <summary>
/// Gets or sets the locations.
/// </summary>
public List<PracticeLocationModel>? Locations { get; set; }
/// <summary>
/// Gets or sets the login role identifier.
/// </summary>
/// <value>
/// The login role identifier.
/// </value>
public short? LoginRoleId { get; set; }
/// <summary>
/// Gets or sets the name of the created by.
/// </summary>
/// <value>
/// The name of the created by.
/// </value>
public string CreatedByName { get; set; }
}
}
namespace Hims.Api.Models.Provider
{
/// <summary>
/// Approve provider request
/// </summary>
public class ApproveProviderRequest
{
/// <summary>
/// Gets or sets the Provider id.
/// </summary>
public int ProviderId { get; set; }
/// <summary>
/// Gets or sets the ModifiedBy.
/// </summary>
public int? ModifiedBy { get; set; }
/// <summary>
/// Gets or sets the comments.
/// </summary>
public int? RoleId { get; set; }
/// <summary>
/// Gets or sets the comments.
/// </summary>
public string? AccountFullName { get; set; }
/// <summary>
/// Gets or sets the comments.
/// </summary>
public string? ProviderName { get; set; }
}
}
namespace Hims.Api.Models.Provider
{
/// <summary>
/// The find provider location request.
/// </summary>
public class FindProviderLocationRequest
{
/// <summary>
/// Gets or sets the provider location id.
/// </summary>
public int ProviderLocationId { get; set; }
/// <summary>
/// Gets or sets the modified by.
/// </summary>
public int ModifiedBy { get; set; }
/// <summary>
/// Gets or sets the comments.
/// </summary>
public int? RoleId { get; set; }
/// <summary>
/// Gets or sets the comments.
/// </summary>
public string? FullName { get; set; }
/// <summary>
/// Gets or sets the provider id.
/// </summary>
public int ProviderId { get; set; }
}
}
namespace Hims.Api.Models.Provider
{
/// <summary>
/// provider find request
/// </summary>
public class FindProviderRequest
{
/// <summary>
/// Gets or sets the encrypted Provider id.
/// </summary>
public string EncryptedProviderId { get; set; }
/// <summary>
/// Gets or sets the location identifier.
/// </summary>
/// <value>
/// The location identifier.
/// </value>
public int? LocationId { get; set; }
/// <summary>
/// Gets or sets the specialization id.
/// </summary>
public int? SpecializationId { get; set; }
/// <summary>
/// Gets or sets the project Name.
/// </summary>
public string? ProjectName { get; set; }
}
}
namespace Hims.Api.Models.Provider
{
/// <summary>
/// The find symptom request.
/// </summary>
public class FindSymptomRequest
{
/// <summary>
/// Gets or sets the service id.
/// </summary>
public string ServiceId { get; set; }
}
}
namespace Hims.Api.Models.Provider
{
/// <summary>
/// The modify provider location request.
/// </summary>
public class ModifyProviderLocationRequest
{
/// <summary>
/// Gets or sets the provider location id.
/// </summary>
public int ProviderLocationId { get; set; }
/// <summary>
/// Gets or sets the provider availability id.
/// </summary>
public int ProviderAvailabilityId { get; set; }
/// <summary>
/// Gets or sets the provider id.
/// </summary>
public int ProviderId { get; set; }
/// <summary>
/// Gets or sets the location id.
/// </summary>
public int LocationId { get; set; }
/// <summary>
/// Gets or sets the practice id.
/// </summary>
public int PracticeId { get; set; }
/// <summary>
/// Gets or sets the consultation duration.
/// </summary>
public short? ConsultationDuration { get; set; }
/// <summary>
/// Gets or sets the consultation charges.
/// </summary>
public decimal? ConsultationCharges { get; set; }
/// <summary>
/// Gets or sets the telemedicine duration.
/// </summary>
public short? TelemedicineDuration { get; set; }
/// <summary>
/// Gets or sets the telemedicine charges.
/// </summary>
public decimal? TelemedicineCharges { get; set; }
/// <summary>
/// Gets or sets the in patient duration.
/// </summary>
public short? InPatientDuration { get; set; }
/// <summary>
/// Gets or sets the out patient duration.
/// </summary>
public short? OutPatientDuration { get; set; }
/// <summary>
/// Gets or sets the casualty duration.
/// </summary>
public short? CasualtyDuration { get; set; }
/// <summary>
/// Gets or sets the follow up days.
/// </summary>
public short? FollowUpDays { get; set; }
/// <summary>
/// Gets or sets the available days.
/// </summary>
public string AvailableDays { get; set; }
/// <summary>
/// Gets or sets the Availability.
/// </summary>
public string Availability { get; set; }
/// <summary>
/// Gets or sets the created by.
/// </summary>
public int CreatedBy { get; set; }
/// <summary>
/// Gets or sets the modified by.
/// </summary>
public int? ModifiedBy { get; set; }
/// <summary>
/// Gets or sets the comments.
/// </summary>
public int? RoleId { get; set; }
/// <summary>
/// Gets or sets the comments.
/// </summary>
public string? FullName { get; set; }
/// <summary>
/// Gets or sets the follow up days.
/// </summary>
public short? FollowUpDaysForIp { get; set; }
/// <summary>
/// Gets or sets the duration.
/// </summary>
public string Duration { get; set; }
/// <summary>
/// Gets or sets the is telemedicine.
/// </summary>
public bool? IsTelemedicine { get; set; }
/// <summary>
/// Gets or sets the is online consultation.
/// </summary>
public bool? IsOnlineConsultation { get; set; }
}
}
\ No newline at end of file
#nullable enable
namespace Hims.Api.Models.Provider
{
using System;
using System.Collections.Generic;
/// <summary>
/// The modify provider request.
/// </summary>
public class ModifyProviderRequest
{
/// <summary>
/// Gets or sets the provider id.
/// </summary>
public int ProviderId { get; set; }
/// <summary>
/// Gets or sets the salutation.
/// </summary>
public string? Salutation { get; set; }
/// <summary>
/// Gets or sets the first name.
/// </summary>
public string FirstName { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the middle name.
/// </summary>
public string? MiddleName { get; set; }
/// <summary>
/// Gets or sets the last name.
/// </summary>
public string LastName { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the full name.
/// </summary>
public string FullName { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the friendly name.
/// </summary>
public string FriendlyName { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the date of birth.
/// </summary>
public DateTime? DateOfBirth { get; set; }
/// <summary>
/// Gets or sets the age.
/// </summary>
public short? Age { get; set; }
/// <summary>
/// Gets or sets the experience.
/// </summary>
public double? Experience { get; set; }
/// <summary>
/// Gets or sets the gender.
/// </summary>
public char? Gender { get; set; }
/// <summary>
/// Gets or sets the marital status.
/// </summary>
public char? MaritalStatus { get; set; }
/// <summary>
/// Gets or sets the email.
/// </summary>
public string Email { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the mobile.
/// </summary>
public string? Mobile { get; set; }
/// <summary>
/// Gets or sets the npi.
/// </summary>
public string NPI { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the country.
/// </summary>
public int CountryId { get; set; }
/// <summary>
/// Gets or sets the department id.
/// </summary>
public int DepartmentId { get; set; }
/// <summary>
/// Gets or sets the profile image url.
/// </summary>
public string? ProfileImageUrl { get; set; }
/// <summary>
/// Gets or sets the profile image url.
/// </summary>
public string? ProfileThumbnailImageUrl { get; set; }
/// <summary>
/// Gets or sets the thumbnail url.
/// </summary>
public string? ThumbnailUrl { get; set; }
/// <summary>
/// Gets or sets the base 64 profile image.
/// </summary>
public string? Base64ProfileImage { get; set; }
/// <summary>
/// Gets or sets the base 64 profile image.
/// </summary>
public string? Base64ProfileThumbnailImage { get; set; }
/// <summary>
/// Gets or sets the theme.
/// </summary>
public string? Theme { get; set; }
/// <summary>
/// Gets or sets a value indicating whether enable email alerts.
/// </summary>
public bool EnableEmailAlerts { get; set; }
/// <summary>
/// Gets or sets a value indicating whether enable sms alerts.
/// </summary>
public bool EnableSMSAlerts { get; set; }
/// <summary>
/// Gets or sets a value indicating whether enable desktop notifications.
/// </summary>
public bool EnableDesktopNotifications { get; set; }
/// <summary>
/// Gets or sets a value indicating whether enable mobile notifications.
/// </summary>
public bool EnableMobileNotifications { get; set; }
/// <summary>
/// Gets or sets the services.
/// </summary>
public string? Services { get; set; }
/// <summary>
/// Gets or sets the specializations.
/// </summary>
public string? Specializations { get; set; }
/// <summary>
/// Gets or sets the about.
/// </summary>
public string? About { get; set; }
/// <summary>
/// Gets or sets the rating.
/// </summary>
public double Rating { get; set; }
/// <summary>
/// Gets or sets the awards honors.
/// </summary>
public string? AwardsHonors { get; set; }
/// <summary>
/// Gets or sets the educations.
/// </summary>
public string? Educations { get; set; }
/// <summary>
/// Gets or sets the memberships.
/// </summary>
public string? Memberships { get; set; }
/// <summary>
/// Gets or sets the registrations.
/// </summary>
public string? Registrations { get; set; }
/// <summary>
/// Gets or sets the experiences.
/// </summary>
public string? Experiences { get; set; }
/// <summary>
/// Gets or sets the password.
/// </summary>
public string? Password { get; set; }
/// <summary>
/// Gets or sets the languages.
/// </summary>
public string? Languages { get; set; }
/// <summary>
/// Gets or sets the created by.
/// </summary>
public int? CreatedBy { get; set; }
/// <summary>
/// Gets or sets the modified by.
/// </summary>
public int? ModifiedBy { get; set; }
/// <summary>
/// Gets or sets the provider no.
/// </summary>
public string? ProviderNo { get; set; }
/// <summary>
/// Gets or sets the provider bank account id.
/// </summary>
public int ProviderBankAccountId { get; set; }
/// <summary>
/// Gets or sets the address line.
/// </summary>
public string? AddressLine { get; set; }
/// <summary>
/// Gets or sets the city.
/// </summary>
public string? City { get; set; }
/// <summary>
/// Gets or sets the state.
/// </summary>
public string? State { get; set; }
/// <summary>
/// Gets or sets the zip code.
/// </summary>
public string? ZipCode { get; set; }
/// <summary>
/// Gets or sets the signature.
/// </summary>
public string? Base64Signature { get; set; }
/// <summary>
/// Gets or sets the clinic picture.
/// </summary>
public string? Base64ClinicPicture { get; set; }
/// <summary>
/// Gets or sets the RoleId.
/// </summary>
public int? RoleId { get; set; }
/// <summary>
/// Gets or sets the AccountFullName .
/// </summary>
public string? AccountFullName { get; set; }
/// <summary>
/// Gets or sets the rejected comments.
/// </summary>
public string? ProviderName { get; set; }
/// <summary>
/// Gets or sets the practice location id.
/// </summary>
public int? PracticeLocationId { get; set; }
/// <summary>
/// Gets or sets the location identifier.
/// </summary>
/// <value>
/// The location identifier.
/// </value>
public int[] LocationIds { get; set; }
/// <summary>
/// Gets or sets the user name.
/// </summary>
public string? UserName { get; set; }
/// <summary>
/// Gets or sets the salutation id.
/// </summary>
public int? SalutationId { get; set; }
/// <summary>
/// Gets or sets the type.
/// </summary>
/// <value>
/// The type.
/// </value>
public char? Type { get; set; }
/// <summary>
/// Gets or sets the employee.
/// </summary>
/// <value>
/// The employee.
/// </value>
public char? Employee { get; set; }
/// <summary>
/// Gets or sets the type of the doctor.
/// </summary>
/// <value>
/// The type of the doctor.
/// </value>
public char? DoctorType { get; set; }
/// <summary>
/// Gets or sets the pan card no.
/// </summary>
/// <value>
/// The pan card no.
/// </value>
public string? PanCardNo { get; set; }
}
}
namespace Hims.Api.Models.Provider
{
/// <summary>
/// The provider charges Model
/// </summary>
public class ProviderCharges
{
/// <summary>
/// Gets or sets the consultation charges.
/// </summary>
public decimal? ConsultationCharges { get; set; }
/// <summary>
/// Gets or sets the telemedicine charges.
/// </summary>
public decimal? TelemedicineCharges { get; set; }
/// <summary>
/// Gets or sets the in patient charges.
/// </summary>
public decimal? InPatientCharges { get; set; }
/// <summary>
/// Gets or sets the out patient charges.
/// </summary>
public decimal? OutPatientCharges { get; set; }
/// <summary>
/// Gets or sets the casualty charges.
/// </summary>
public decimal? CasualtyCharges { get; set; }
/// <summary>
/// Gets or sets the covid charges.
/// </summary>
public decimal? CovidCharges { get; set; }
/// <summary>
/// Gets or sets the special charges.
/// </summary>
public decimal? SpecialCharges { get; set; }
/// <summary>
/// Gets or sets the availability.
/// </summary>
public string Availability { get; set; } = string.Empty;
}
}
\ No newline at end of file
namespace Hims.Api.Models.Provider
{
/// <summary>
/// Reject provider request
/// </summary>
public class RejectProviderRequest
{
/// <summary>
/// Gets or sets the Provider id.
/// </summary>
public int ProviderId { get; set; }
/// <summary>
/// Gets or sets the rejected comments.
/// </summary>
public string RejectedComments { get; set; }
/// <summary>
/// Gets or sets the rejected comments.
/// </summary>
public int? ModifiedBy { get; set; }
/// <summary>
/// Gets or sets the rejected comments.
/// </summary>
public int? RoleId { get; set; }
/// <summary>
/// Gets or sets the rejected comments.
/// </summary>
public string? AccountFullName { get; set; }
/// <summary>
/// Gets or sets the rejected comments.
/// </summary>
public string? ProviderName { get; set; }
}
}
namespace Hims.Api.Models.Provider
{
/// <summary>
/// The SlotStatus
/// </summary>
public enum SlotStatus
{
/// <summary>
/// Available is A.
/// </summary>
Available = 'A',
/// <summary>
/// Booked is B.
/// </summary>
Booked = 'B',
/// <summary>
/// Expired is E.
/// </summary>
Expired = 'E'
}
}
\ No newline at end of file
namespace Hims.Api.Models.Provider
{
using System;
/// <summary>
/// The Time Slot Model
/// </summary>
public class TimeSlotModel
{
/// <summary>
/// Gets or sets the slot value.
/// </summary>
public string SlotValue { get; set; }
/// <summary>
/// Gets or sets the slot time.
/// </summary>
public TimeSpan SlotTime { get; set; }
/// <summary>
/// Gets or sets the slot name.
/// </summary>
public string SlotName { get; set; }
/// <summary>
/// Gets or sets the status.
/// </summary>
public SlotStatus Status { get; set; }
/// <summary>
/// Gets or sets the token number.
/// </summary>
/// <value>
/// The token number.
/// </value>
public int TokenNumber { get; set; }
/// <summary>
/// Gets or sets the value.
/// </summary>
public string Value { get; set; }
}
}
\ No newline at end of file
#nullable enable
namespace Hims.Api.Models.Provider
{
/// <summary>
/// The update provider image request.
/// </summary>
public class UpdateProviderImageRequest
{
/// <summary>
/// Gets or sets the provider id.
/// </summary>
public int ProviderId { get; set; }
/// <summary>
/// Gets or sets the base 64 image string.
/// </summary>
public string? Base64ImageString { get; set; }
}
}
#nullable enable
namespace Hims.Api.Models.Provider
{
/// <summary>
/// The provider upload document model.
/// </summary>
public class UploadProviderDocumentModel
{
/// <summary>
/// Gets or sets the encrypted provider id.
/// </summary>
public string EncryptedProviderId { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the document (Base 64 Image String).
/// </summary>
public string Document { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the document url.
/// </summary>
public string DocumentUrl { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the thumbnail url.
/// </summary>
public string ThumbnailUrl { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the document type.
/// </summary>
public string? DocumentType { get; set; }
/// <summary>
/// Gets or sets the document name.
/// </summary>
public string DocumentName { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the description.
/// </summary>
public string? Description { get; set; }
}
}
using Newtonsoft.Json;
namespace Hims.Api.Models.PushNotifications
{
public class DataPayload
{
[JsonProperty("type")]
public string Type { get; set; }
[JsonProperty("do")]
public string Do { get; set; }
[JsonProperty("reason")]
public string Reason { get; set; }
}
}
using Newtonsoft.Json;
namespace Hims.Api.Models.PushNotifications
{
public class GoogleNotification
{
[JsonProperty("priority")]
public string Priority { get; set; } = "high";
[JsonProperty("data")]
public DataPayload Data { get; set; }
[JsonProperty("notification")]
public NotificationModel Notification { get; set; }
}
}
using Hims.Api.Hubs;
using Newtonsoft.Json;
namespace Hims.Api.Models.PushNotifications
{
public class GoogleWebNotification
{
[JsonProperty("priority")]
public string Priority { get; set; } = "high";
[JsonProperty("data")]
public CommunicationMessageAlt Data { get; set; }
[JsonProperty("notification")]
public NotificationModel Notification { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
namespace Hims.Api.Models.PushNotifications
{
public class NotificationModel
{
[JsonProperty("deviceId")]
public string DeviceId { get; set; }
[JsonProperty("isAndroiodDevice")]
public bool IsAndroiodDevice { get; set; }
[JsonProperty("title")]
public string Title { get; set; }
[JsonProperty("body")]
public string Body { get; set; }
}
}
using Newtonsoft.Json;
namespace Hims.Api.Models.PushNotifications
{
public class ResponseModel
{
[JsonProperty("isSuccess")]
public bool IsSuccess { get; set; }
[JsonProperty("message")]
public string Message { get; set; }
}
}
using CorePush.Google;
using Hims.Api.Hubs;
using Hims.Domain.Configurations;
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
namespace Hims.Api.Models.PushNotifications.Service
{
/// <summary>
/// NotificationService interface
/// </summary>
public interface INotificationService
{
/// <summary>
/// Sends the notification.
/// </summary>
/// <param name="notificationModel">The notification model.</param>
/// <param name="data">The data.</param>
/// <returns></returns>
Task<ResponseModel> SendNotification(NotificationModel notificationModel, DataPayload data);
/// <summary>
/// Sends the web notification.
/// </summary>
/// <param name="notificationModel">The notification model.</param>
/// <param name="data">The data.</param>
/// <returns></returns>
Task<ResponseModel> SendWebNotification(NotificationModel notificationModel, CommunicationMessageAlt data);
}
/// <summary>
/// NotificationService service
/// </summary>
/// <seealso cref="Hims.Api.Models.PushNotifications.Service.INotificationService" />
public class NotificationService : INotificationService
{
private readonly INotificationConfiguration configuration;
/// <summary>
/// Initializes a new instance of the <see cref="NotificationService"/> class.
/// </summary>
/// <param name="configuration">The configuration.</param>
public NotificationService(INotificationConfiguration configuration)
{
this.configuration = configuration;
}
/// <summary>
/// Sends the notification.
/// </summary>
/// <param name="notificationModel">The notification model.</param>
/// <param name="data">The data.</param>
/// <returns></returns>
public async Task<ResponseModel> SendNotification(NotificationModel notificationModel, DataPayload data)
{
ResponseModel response = new ResponseModel();
try
{
if (notificationModel.IsAndroiodDevice)
{
/* FCM Sender (Android Device) */
var settings = new FcmSettings()
{
SenderId = this.configuration.SenderId,
ServerKey = this.configuration.ServerKey
};
HttpClient httpClient = new HttpClient();
string authorizationKey = string.Format("keyy={0}", settings.ServerKey);
string deviceToken = notificationModel.DeviceId;
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", authorizationKey);
httpClient.DefaultRequestHeaders.Accept
.Add(new MediaTypeWithQualityHeaderValue("application/json"));
DataPayload dataPayload = new DataPayload
{
Do = data.Do,
Type = data.Type,
Reason = data.Reason
};
GoogleNotification notification = new GoogleNotification
{
Data = dataPayload,
Notification = notificationModel
};
var fcm = new FcmSender(settings, httpClient);
var fcmSendResponse = await fcm.SendAsync(deviceToken, notification);
if (fcmSendResponse.IsSuccess())
{
response.IsSuccess = true;
response.Message = "Notification sent successfully";
return response;
}
else
{
response.IsSuccess = false;
response.Message = fcmSendResponse.Results[0].Error;
return response;
}
}
else
{
/* Code here for APN Sender (iOS Device) */
//var apn = new ApnSender(apnSettings, httpClient);
//await apn.SendAsync(notification, deviceToken);
}
return response;
}
catch (Exception ex)
{
response.IsSuccess = false;
response.Message = "Something went wrong";
return response;
}
}
/// <summary>
/// Sends the web notification.
/// </summary>
/// <param name="notificationModel">The notification model.</param>
/// <param name="data">The data.</param>
/// <returns></returns>
public async Task<ResponseModel> SendWebNotification(NotificationModel notificationModel, CommunicationMessageAlt data)
{
ResponseModel response = new ResponseModel();
try
{
var settings = new FcmSettings()
{
SenderId = this.configuration.SenderId,
ServerKey = this.configuration.ServerKey
};
HttpClient httpClient = new HttpClient();
string authorizationKey = string.Format("keyy={0}", settings.ServerKey);
string deviceToken = notificationModel.DeviceId;
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", authorizationKey);
httpClient.DefaultRequestHeaders.Accept
.Add(new MediaTypeWithQualityHeaderValue("application/json"));
GoogleWebNotification notification = new GoogleWebNotification
{
Data = data,
Notification = notificationModel
};
var fcm = new FcmSender(settings, httpClient);
var fcmSendResponse = await fcm.SendAsync(deviceToken, notification);
if (fcmSendResponse.IsSuccess())
{
response.IsSuccess = true;
response.Message = "Notification sent successfully";
return response;
}
response.IsSuccess = false;
response.Message = fcmSendResponse.Results[0].Error;
return response;
}
catch (Exception ex)
{
response.IsSuccess = false;
response.Message = "Something went wrong";
return response;
}
}
}
}
using System;
using System.Collections.Generic;
using Hims.Domain.Entities;
namespace Hims.Api.Models.RealTime
{
public class RealTimeModel
{
public int AppointmentId { get; set; }
public int StatusId { get; set; }
public string CubicleName { get; set; } = null;
public string FirstAppointmentTime { get; set; } = null;
public string Ip { get; set; } = null;
public List<Shared.UserModels.Queue.PatientModel> Patients { get; set; } = null;
public Shared.UserModels.Queue.PatientModel CurrentPatient { get; set; } = null;
}
}
namespace Hims.Api.Models.Specialization
{
/// <summary>
/// get or set the find specialization request.
/// </summary>
public class FindSpecializationRequest
{
/// <summary>
/// Gets or sets the encrypted Specialization ID.
/// </summary>
public string EncryptedSpecializationId { get; set; }
}
}
namespace Hims.Api.Models.Ticket
{
/// <summary>
/// The attachments.
/// </summary>
public class Attachments
{
/// <summary>
/// Gets or sets the url.
/// </summary>
public string Url { get; set; }
/// <summary>
/// Gets or sets the file name.
/// </summary>
public string FileName { get; set; }
/// <summary>
/// Gets or sets the extension.
/// </summary>
public string Extension { get; set; }
}
}
namespace Hims.Api.Models.Ticket.Performance
{
using System.Collections.Generic;
/// <summary>
/// The performance.
/// </summary>
public class Performance
{
/// <summary>
/// Gets or sets the tickets.
/// </summary>
public List<Tickets> Tickets { get; set; }
/// <summary>
/// Gets or sets the performance status.
/// </summary>
public PerformanceStatus HighPriority { get; set; }
/// <summary>
/// Gets or sets the low priority.
/// </summary>
public PerformanceStatus LowPriority { get; set; }
/// <summary>
/// Gets or sets the medium priority.
/// </summary>
public PerformanceStatus MediumPriority { get; set; }
}
}
namespace Hims.Api.Models.Ticket.Performance
{
/// <summary>
/// The performance status.
/// </summary>
public class PerformanceStatus
{
/// <summary>
/// Gets or sets the total average.
/// </summary>
public double TotalAverage { get; set; }
/// <summary>
/// Gets or sets the performance.
/// </summary>
public double Performance { get; set; }
/// <summary>
/// Gets or sets the total hour.
/// </summary>
public double TotalHour { get; set; }
/// <summary>
/// Gets or sets the total hour taken.
/// </summary>
public double TotalHourTaken { get; set; }
/// <summary>
/// Gets or sets the ticket count.
/// </summary>
public int TicketCount { get; set; }
}
}
namespace Hims.Api.Models.Ticket.Performance
{
using System;
/// <summary>
/// The tickets.
/// </summary>
public class Tickets
{
/// <summary>
/// Gets or sets the encrypted ticket id.
/// </summary>
public string EncryptedTicketId { get; set; }
/// <summary>
/// Gets or sets the start date.
/// </summary>
public string StartDate { get; set; }
/// <summary>
/// Gets or sets the ticket number.
/// </summary>
public string TicketNumber { get; set; }
/// <summary>
/// Gets or sets the end date.
/// </summary>
public DateTime? EndDate { get; set; }
/// <summary>
/// Gets or sets the status.
/// </summary>
public string Status { get; set; }
/// <summary>
/// Gets or sets the priority.
/// </summary>
public string Priority { get; set; }
/// <summary>
/// Gets or sets the average.
/// </summary>
public double Average { get; set; }
}
}
namespace Hims.Api.Models.Ticket
{
using System;
/// <summary>
/// The ticket request filter.
/// </summary>
public class TicketRequestFilter
{
/// <summary>
/// Gets or sets the page size.
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// Gets or sets the page index.
/// </summary>
public int PageIndex { get; set; }
/// <summary>
/// Gets or sets the assigned to.
/// </summary>
public int? AssignedTo { get; set; }
/// <summary>
/// Gets or sets the account id.
/// </summary>
public int? AccountId { get; set; }
/// <summary>
/// Gets or sets the is admin.
/// </summary>
public bool? IsAdmin { get; set; }
/// <summary>
/// Gets or sets the ticket id.
/// </summary>
public long? TicketId { get; set; }
/// <summary>
/// Gets or sets the ticket timeline id.
/// </summary>
public long? TicketTimelineId { get; set; }
/// <summary>
/// Gets or sets the comments.
/// </summary>
public string Comments { get; set; }
/// <summary>
/// Gets or sets the start date.
/// </summary>
public DateTime? StartDate { get; set; }
/// <summary>
/// Gets or sets the end date.
/// </summary>
public DateTime? EndDate { get; set; }
/// <summary>
/// Gets or sets the filter type.
/// </summary>
public string FilterType { get; set; }
/// <summary>
/// Gets or sets the priority.
/// </summary>
public string Priority { get; set; }
/// <summary>
/// Gets or sets the status.
/// </summary>
public string Status { get; set; }
/// <summary>
/// Gets or sets the issue with.
/// </summary>
public string IssueWith { get; set; }
/// <summary>
/// Gets or sets the issue with.
/// </summary>
public string MobileNo { get; set; }
/// <summary>
/// Gets or sets the device type.
/// </summary>
public string? DeviceType { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the device type.
/// </summary>
public int? AssigneeAccountId { get; set; }
/// <summary>
/// Gets or sets the location id.
/// </summary>
public int? LocationId { get; set; }
}
}
namespace Hims.Api.Models.User
{
/// <summary>
/// The find user request.
/// </summary>
public class FindUserRequest
{
/// <summary>
/// Gets or sets the encrypted user ID.
/// </summary>
public string EncryptedUserId { get; set; }
}
}
namespace Hims.Api.Models.WebTelemedicine
{
/// <summary>
/// The find user request.
/// </summary>
public class WebTelemedicineTokenRequest
{
/// <summary>
/// Gets or sets the encrypted user ID.
/// </summary>
public string RoomName { get; set; }
/// <summary>
/// Gets or sets the account id.
/// </summary>
public int AccountId { get; set; }
}
}
namespace Hims.Api.Models.WebTelemedicine
{
/// <summary>
/// The video link request.
/// </summary>
public class VideoLinkRequest
{
/// <summary>
/// Gets or sets the appointment id.
/// </summary>
public string AppointmentNo { get; set; }
}
}
namespace Hims.Api.Profiles
{
using AutoMapper;
using Models.Appointment;
using Models.Patient;
using Models.Practice;
using Models.Provider;
using Shared.EntityModels;
/// <inheritdoc />
public class MappingProfile : Profile
{
/// <inheritdoc />
public MappingProfile()
{
// Practice
this.CreateMap<PracticeRegistrationRequest, PracticeModel>();
this.CreateMap<ModifyPracticeRequest, PracticeModel>();
// Provider
this.CreateMap<ModifyProviderRequest, ProviderModel>();
this.CreateMap<ModifyProviderLocationRequest, ProviderLocationModel>();
// Patient
this.CreateMap<ModifyPatientRequest, PatientModel>();
// Appointment
this.CreateMap<BookAppointmentRequest, AppointmentLogModel>();
this.CreateMap<BookAppointmentRequest, AppointmentModel>();
}
}
}
namespace Hims.Api.Senders
{
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Domain.Configurations;
using Domain.Helpers;
using Models.MailTemplates;
using Shared.DataFilters;
using Shared.Library;
using Shared.Library.MailKit;
using Hims.Shared.EntityModels;
using VirtualSteth.Api.Models.MailTemplates;
using Hims.Shared.UserModels;
/// <inheritdoc />
public class EmailSender : IEmailSender
{
/// <summary>
/// The application configuration.
/// </summary>
private readonly IApplicationConfiguration applicationConfiguration;
/// <summary>
/// The template helper.
/// </summary>
private readonly ITemplateHelper templateHelper;
/// <summary>
/// The email helper.
/// </summary>
private readonly IEmailHelper emailHelper;
/// <summary>
/// The running environment.
/// </summary>
private readonly IRunningEnvironment runningEnvironment;
/// <summary>
/// The mail server error.
/// </summary>
private readonly string mailServerError;
/// <inheritdoc cref="IEmailSender"/> />
public EmailSender(IApplicationConfiguration applicationConfiguration, ITemplateHelper templateHelper, IEmailHelper emailHelper, IRunningEnvironment runningEnvironment)
{
this.applicationConfiguration = applicationConfiguration;
this.templateHelper = templateHelper;
this.emailHelper = emailHelper;
this.runningEnvironment = runningEnvironment;
this.mailServerError = "Due to mail server issue we are unable to send mails at this moment. Please contact an administrator for further details.";
}
/// <inheritdoc />
public async Task<OTPResponse> SendOTPAsync(string email, string fullName)
{
var otp = CoreFilter.RandomNumbers(4);
try
{
var mailTemplateModel = new EmailOTP
{
FullName = fullName,
OTP = otp,
Email = email,
AndroidAppLink = this.applicationConfiguration.AndroidAppLink,
IOSAppLink = this.applicationConfiguration.IOSAppLink,
MailTemplatesImagesLink = this.applicationConfiguration.MailTemplatesImagesLink
};
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Careaxes Verification Code",
Content = await this.templateHelper.RenderTemplateAsync("EmailOTP", mailTemplateModel)
};
emailMessage.ToAddresses.Add(new EmailAddress { Name = mailTemplateModel.FullName, Address = email });
await this.emailHelper.SendAsync(emailMessage);
return new OTPResponse { OTP = otp, OTPExpiresIn = 180 };
}
catch
{
return new OTPResponse { Error = true, ErrorDescription = this.mailServerError, OTP = otp, OTPExpiresIn = 180 };
}
}
/// <inheritdoc />
public async Task<bool> SendVideoLinkAsync(string email, string fullName, string providerName, string link)
{
try
{
var mailTemplateModel = new VideoConferenceLink
{
FullName = fullName,
VideoLink = link,
DoctorName = providerName,
AndroidAppLink = this.applicationConfiguration.AndroidAppLink,
IOSAppLink = this.applicationConfiguration.IOSAppLink,
MailTemplatesImagesLink = this.applicationConfiguration.MailTemplatesImagesLink
};
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Virtual Steth Video Conference Link",
//Content = $"{link} is your Virtual Steth video conference link to connect your doctor."
Content = await this.templateHelper.RenderTemplateAsync("VideoConferenceLink", mailTemplateModel)
};
emailMessage.ToAddresses.Add(new EmailAddress { Name = mailTemplateModel.FullName, Address = email });
await this.emailHelper.SendAsync(emailMessage);
return true;
}
catch
{
return false;
}
}
/// <inheritdoc />
public async Task<bool> SendProviderWelcomeMailAsync(string email, string fullName)
{
try
{
var mailTemplateModel = new Welcome
{
FullName = fullName,
AccountName = "Doctor",
GetStartedLink = this.applicationConfiguration.ProviderPortalLink,
AndroidAppLink = this.applicationConfiguration.AndroidAppLink,
IOSAppLink = this.applicationConfiguration.IOSAppLink,
MailTemplatesImagesLink = this.applicationConfiguration.MailTemplatesImagesLink
};
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Welcome to Careaxes",
Content = await this.templateHelper.RenderTemplateAsync("Welcome", mailTemplateModel)
};
emailMessage.ToAddresses.Add(new EmailAddress { Name = mailTemplateModel.FullName, Address = email });
await this.emailHelper.SendAsync(emailMessage);
return true;
}
catch
{
return false;
}
}
/// <inheritdoc />
public async Task<bool> SendPatientWelcomeMailAsync(string email, string fullName)
{
try
{
var mailTemplateModel = new Welcome
{
FullName = fullName,
AccountName = "Patient",
GetStartedLink = this.applicationConfiguration.WebsiteLink,
AndroidAppLink = this.applicationConfiguration.AndroidAppLink,
IOSAppLink = this.applicationConfiguration.IOSAppLink,
MailTemplatesImagesLink = this.applicationConfiguration.MailTemplatesImagesLink
};
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Welcome to Careaxes",
Content = await this.templateHelper.RenderTemplateAsync("Welcome", mailTemplateModel)
};
emailMessage.ToAddresses.Add(new EmailAddress { Name = mailTemplateModel.FullName, Address = email });
await this.emailHelper.SendAsync(emailMessage);
return true;
}
catch
{
return false;
}
}
/// <inheritdoc />
public async Task<bool> SendCreatePasswordMailAsync(string email, string fullName, string createPasswordLink, string roleName)
{
try
{
var mailTemplateModel = new CreatePassword
{
FullName = fullName,
AccountName = roleName,
CreatePasswordLink = createPasswordLink,
AndroidAppLink = this.applicationConfiguration.AndroidAppLink,
IOSAppLink = this.applicationConfiguration.IOSAppLink,
MailTemplatesImagesLink = this.applicationConfiguration.MailTemplatesImagesLink
};
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Welcome to Careaxes",
Content = await this.templateHelper.RenderTemplateAsync("CreatePassword", mailTemplateModel)
};
emailMessage.ToAddresses.Add(new EmailAddress { Name = mailTemplateModel.FullName, Address = email });
await this.emailHelper.SendAsync(emailMessage);
return true;
}
catch
{
return false;
}
}
/// <inheritdoc />
public async Task<bool> SendBookAppointmentMailAsync(string email, string patientName, string accountName, string doctorName, string appointmentTime, string type)
{
try
{
var mailTemplateModel = new BookAppointment
{
FullName = accountName == "Patient" ? patientName : doctorName,
AccountName = accountName,
Message = accountName == "Patient" ? $@"Your Appointment {type} with Dr.{doctorName}" : $@"Patient {patientName} {type} an appointment with you",
AppointmentTime = appointmentTime,
AndroidAppLink = this.applicationConfiguration.AndroidAppLink,
IOSAppLink = this.applicationConfiguration.IOSAppLink,
MailTemplatesImagesLink = this.applicationConfiguration.MailTemplatesImagesLink
};
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Careaxes Appointment Confirmation",
Content = await this.templateHelper.RenderTemplateAsync("BookAppointment", mailTemplateModel)
};
emailMessage.ToAddresses.Add(new EmailAddress { Name = mailTemplateModel.FullName, Address = email });
await this.emailHelper.SendAsync(emailMessage);
return true;
}
catch (Exception e)
{
e.Message.ToString();
return false;
}
}
/// <inheritdoc />
public async Task<bool> SendMailAsync(string doctorName)
{
try
{
var mailTemplateModel = new EmailOTP
{
FullName = "Vikas",
OTP = $@"Hi, Dr.{doctorName} registered with us, can you please verify and approve/reject it",
Email = "vikas@docassistant.net",
AndroidAppLink = this.applicationConfiguration.AndroidAppLink,
IOSAppLink = this.applicationConfiguration.IOSAppLink,
MailTemplatesImagesLink = this.applicationConfiguration.MailTemplatesImagesLink
};
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Hims Provider registration",
Content = await this.templateHelper.RenderTemplateAsync("BookAppointment", mailTemplateModel)
};
emailMessage.ToAddresses.Add(new EmailAddress { Name = mailTemplateModel.FullName, Address = this.applicationConfiguration.Email });
await this.emailHelper.SendAsync(emailMessage);
return true;
}
catch
{
return false;
}
}
/// <inheritdoc />
public async Task<bool> SendWelcomeMailAsync(string email, string fullName, string password, string createPasswordLink)
{
try
{
// Welcome
var welcomeModel = new Welcome
{
FullName = fullName,
AccountName = "Patient",
AndroidAppLink = this.applicationConfiguration.AndroidAppLink,
IOSAppLink = this.applicationConfiguration.IOSAppLink,
GetStartedLink = this.applicationConfiguration.WebsiteLink,
MailTemplatesImagesLink = this.applicationConfiguration.MailTemplatesImagesLink
};
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Welcome to Careaxes",
Content = await this.templateHelper.RenderTemplateAsync("Welcome", welcomeModel)
};
emailMessage.ToAddresses.Add(new EmailAddress { Name = fullName, Address = email });
await this.emailHelper.SendAsync(emailMessage);
// Create Account
if (string.IsNullOrEmpty(password))
{
var createPasswordModel = new CreatePassword
{
FullName = fullName,
CreatePasswordLink = createPasswordLink,
AndroidAppLink = this.applicationConfiguration.AndroidAppLink,
IOSAppLink = this.applicationConfiguration.IOSAppLink,
MailTemplatesImagesLink = this.applicationConfiguration.MailTemplatesImagesLink
};
emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Create your password in Careaxes",
Content = await this.templateHelper.RenderTemplateAsync("CreatePassword", createPasswordModel)
};
emailMessage.ToAddresses.Add(new EmailAddress { Name = fullName, Address = email });
await this.emailHelper.SendAsync(emailMessage);
}
return true;
}
catch (Exception ex)
{
return false;
}
}
/// <inheritdoc />
public async Task<bool> ResetPasswordMailAsync(string email, string fullName, string accountType, string resetPasswordLink)
{
try
{
var mailTemplateModel = new ResetPassword
{
FullName = fullName,
AccountName = accountType,
ResetPasswordLink = resetPasswordLink,
AndroidAppLink = this.applicationConfiguration.AndroidAppLink,
IOSAppLink = this.applicationConfiguration.IOSAppLink,
MailTemplatesImagesLink = this.applicationConfiguration.MailTemplatesImagesLink
};
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Reset your password in Careaxes",
Content = await this.templateHelper.RenderTemplateAsync("ResetPassword", mailTemplateModel)
};
emailMessage.ToAddresses.Add(new EmailAddress { Name = fullName, Address = email });
await this.emailHelper.SendAsync(emailMessage);
return true;
}
catch
{
return false;
}
}
/// <inheritdoc />
public async Task<bool> SendPaymentMailAsync(string email, string fullName, string paymentLink)
{
try
{
var mailTemplateModel = new PayoutSmartSend
{
FullName = fullName,
AccountName = "Provider",
PaymentLink = paymentLink,
AndroidAppLink = this.applicationConfiguration.AndroidAppLink,
IOSAppLink = this.applicationConfiguration.IOSAppLink,
MailTemplatesImagesLink = this.applicationConfiguration.MailTemplatesImagesLink
};
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Careaxes Payment Disburse",
Content = await this.templateHelper.RenderTemplateAsync("SmartSend", mailTemplateModel)
};
emailMessage.ToAddresses.Add(new EmailAddress { Name = mailTemplateModel.FullName, Address = email });
await this.emailHelper.SendAsync(emailMessage);
return true;
}
catch
{
return false;
}
}
/// <inheritdoc />
public async Task<bool> SendAlertEmailToSupport(IEnumerable<AccountModel> model)
{
try
{
var mobile = "";
var description = "";
var patientName = "";
int i = 0;
foreach (var item in model)
{
if (i == 0)
{
mobile = item.Mobile;
description = item.Description;
patientName = item.RoleName;
break;
}
i++;
}
var mailTemplateModel = new EmailOTP
{
AndroidAppLink = this.applicationConfiguration.AndroidAppLink,
IOSAppLink = this.applicationConfiguration.IOSAppLink,
MailTemplatesImagesLink = this.applicationConfiguration.MailTemplatesImagesLink,
Mobile = mobile,
Description = description,
UserName = patientName
};
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Careaxes Ticket Alert",
Content = await this.templateHelper.RenderTemplateAsync("TicketReminder", mailTemplateModel)
};
foreach (var accountModel in model)
{
emailMessage.ToAddresses.Add(new EmailAddress { Name = accountModel.FullName, Address = accountModel.Email });
}
await this.emailHelper.SendAsync(emailMessage);
return true;
}
catch
{
return false;
}
}
/// <inheritdoc />
public async Task<bool> SendAppLinksAsync(string email)
{
try
{
var mailTemplateModel = new BookAppointment
{
AccountName = "",
FullName = "",
AppointmentTime = "",
AndroidAppLink = this.applicationConfiguration.AndroidAppLink,
IOSAppLink = this.applicationConfiguration.IOSAppLink,
MailTemplatesImagesLink = this.applicationConfiguration.MailTemplatesImagesLink
};
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Mobile App link",
Content = await this.templateHelper.RenderTemplateAsync("GetLinksToEmail", mailTemplateModel)
};
emailMessage.ToAddresses.Add(new EmailAddress { Name = mailTemplateModel.FullName, Address = email });
await this.emailHelper.SendAsync(emailMessage);
return true;
}
catch
{
return false;
}
}
/// <inheritdoc />
public async Task<bool> SendAssignEmailToSupport(Tickets ticket)
{
try
{
ticket.MailTemplatesImagesLink = this.applicationConfiguration.MailTemplatesImagesLink;
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Careaxes Ticket Alert",
Content = await this.templateHelper.RenderTemplateAsync("TicketAssign", ticket)
};
foreach (var accountModel in ticket.SupportUsers)
{
emailMessage.ToAddresses.Add(new EmailAddress { Name = accountModel.FullName, Address = accountModel.Email });
}
await this.emailHelper.SendAsync(emailMessage);
return true;
}
catch
{
return false;
}
}
/// <inheritdoc />
public async Task<bool> SendExceptionLogEmailToSupport(IEnumerable<AccountModel> supportUsers, string logfrom, string errorMessage)
{
try
{
var mailTemplateModel = new ExceptionLogInfo
{
LogFrom = logfrom,
ErrorMessage = errorMessage,
LogDate = DateTime.Now
};
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = $@"Exception occurs in {this.runningEnvironment.CurrentEnvironment}: {logfrom}",
Content = errorMessage
};
foreach (var accountModel in supportUsers)
{
emailMessage.ToAddresses.Add(new EmailAddress { Name = accountModel.FullName, Address = accountModel.Email });
}
await this.emailHelper.SendAsync(emailMessage);
return true;
}
catch (Exception)
{
return false;
}
}
/// <inheritdoc />
public async Task<bool> SendPharmacyMailAsync(IEnumerable<AccountModel> emails, ProductEmailModel model)
{
try
{
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "New Purchase Bill Added",
Content = await this.templateHelper.RenderTemplateAsync("PharmacyPurchaseEmail", model)
};
foreach (var email in emails)
{
emailMessage.ToAddresses.Add(new EmailAddress { Address = email.Email });
}
await this.emailHelper.SendAsync(emailMessage);
return true;
}
catch (Exception ex)
{
return false;
}
}
/// <inheritdoc />
public async Task<bool> SendFinalBillEmailAsync(IEnumerable<AccountModel> emails, PharmacyBillReportModel model)
{
try
{
var emailMessage = new EmailMessage
{
Importance = true,
Priority = true,
Subject = "Final Bill Report",
Content = await this.templateHelper.RenderTemplateAsync("PharmacyFinalBillEmail", model)
};
foreach (var email in emails)
{
emailMessage.ToAddresses.Add(new EmailAddress { Address = email.Email });
}
await this.emailHelper.SendAsync(emailMessage);
return true;
}
catch (Exception ex)
{
return false;
}
}
}
}
\ No newline at end of file
using System;
namespace Hims.Api.Senders
{
internal class ExceptionLogInfo
{
public string LogFrom { get; set; }
public string ErrorMessage { get; set; }
public DateTime LogDate { get; set; }
}
}
\ No newline at end of file
namespace Hims.Api.Senders
{
using System.Collections.Generic;
using System.Threading.Tasks;
using Shared.Library;
using Hims.Api.Models.MailTemplates;
using Hims.Shared.EntityModels;
using Hims.Shared.UserModels;
/// <summary>
/// The EmailSender interface.
/// </summary>
public interface IEmailSender
{
/// <summary>
/// The send OTP async.
/// </summary>
/// <param name="email">
/// The email.
/// </param>
/// <param name="fullName">
/// The full name.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<OTPResponse> SendOTPAsync(string email, string fullName);
/// <summary>
/// The send provider welcome mail async.
/// </summary>
/// <param name="email">
/// The email.
/// </param>
/// <param name="fullName">
/// The full name.
/// </param>
/// <param name="createPasswordLink">
/// The encrypted provider id.
/// </param>
/// <param name="roleName">
/// The role Name.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendCreatePasswordMailAsync(string email, string fullName, string createPasswordLink, string roleName);
/// <summary>
/// The send provider welcome mail async.
/// </summary>
/// <param name="email">
/// The email.
/// </param>
/// <param name="fullName">
/// The full name.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendProviderWelcomeMailAsync(string email, string fullName);
/// <summary>
/// The send provider welcome mail async.
/// </summary>
/// <param name="doctorName">
/// The full name.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendMailAsync(string doctorName);
/// <summary>
/// The send patient welcome mail async.
/// </summary>
/// <param name="email">
/// The email.
/// </param>
/// <param name="fullName">
/// The full name.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendPatientWelcomeMailAsync(string email, string fullName);
/// <summary>The send book appointment mail async.</summary>
/// <param name="email">The email.</param>
/// <param name="patientName">The patient name.</param>
/// <param name="accountName">The account name.</param>
/// <param name="doctorName">The doctor name.</param>
/// <param name="appointmentTime">The appointment time.</param>
/// <param name="type">The type.</param>
/// <returns>The <see cref="Task"/>.</returns>
Task<bool> SendBookAppointmentMailAsync(string email, string patientName, string accountName, string doctorName, string appointmentTime, string type);
/// <summary>
/// The send welcome mail async.
/// </summary>
/// <param name="email">
/// The email.
/// </param>
/// <param name="fullName">
/// The full Name.
/// </param>
/// <param name="password">
/// The password.
/// </param>
/// <param name="createPasswordLink">
/// The create Password Link.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendWelcomeMailAsync(string email, string fullName, string password, string createPasswordLink);
/// <summary>
/// The reset password mail async.
/// </summary>
/// <param name="email">
/// The email.
/// </param>
/// <param name="fullName">
/// The full name.
/// </param>
/// <param name="accountType">
/// The account type.
/// </param>
/// <param name="resetPasswordLink">
/// The reset password link.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> ResetPasswordMailAsync(string email, string fullName, string accountType, string resetPasswordLink);
/// <summary>
/// The send payment mail async.
/// </summary>
/// <param name="email">
/// The email.
/// </param>
/// <param name="fullName">
/// The full name.
/// </param>
/// <param name="paymentLink">
/// The payment link.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendPaymentMailAsync(string email, string fullName, string paymentLink);
/// <summary>
/// The send video link async.
/// </summary>
/// <param name="email">
/// The email.
/// </param>
/// <param name="fullName">
/// The full name.
/// </param>
/// <param name="providerName">
/// The provider name.
/// </param>
/// <param name="link">
/// The link.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendVideoLinkAsync(string email, string fullName, string providerName, string link);
/// <summary>
/// The send alert email to support.
/// </summary>
/// <param name="model">
/// The model.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendAlertEmailToSupport(IEnumerable<AccountModel> model);
/// <summary>
/// The send app links async.
/// </summary>
/// <param name="email">
/// The email.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendAppLinksAsync(string email);
/// <summary>
/// The send assign email to support.
/// </summary>
/// <param name="ticket">
/// The ticket.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendAssignEmailToSupport(Tickets ticket);
/// <summary>
/// The send assign email to support.
/// </summary>
/// <param name="supportUsers">
/// The ticket.
/// </param>
/// <param name="logfrom">
/// </param>
/// <param name="errorMessage">
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendExceptionLogEmailToSupport(IEnumerable<AccountModel> supportUsers, string logfrom, string errorMessage);
/// The send assign email to support.
/// </summary>
/// <param name="supportUsers">
/// The ticket.
/// </param>
/// <param name="logfrom">
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendPharmacyMailAsync(IEnumerable<AccountModel> emails, ProductEmailModel model);
/// The send assign email to support.
/// </summary>
/// <param name="supportUsers">
/// The ticket.
/// </param>
/// <param name="logfrom">
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendFinalBillEmailAsync(IEnumerable<AccountModel> emails, PharmacyBillReportModel model);
}
}
namespace Hims.Api.Senders
{
using System;
using System.Threading.Tasks;
using Hims.Shared.EntityModels;
using Hims.Shared.Library;
/// <summary>
/// The SMSSender interface.
/// </summary>
public interface ISMSSender
{
/// <summary>
/// The send OTP async.
/// </summary>
/// <param name="mobile">
/// The mobile.
/// </param>
/// <param name="countryId">
/// The country Id.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<OTPResponse> SendOTPAsync(string mobile, int countryId, string otp);
/// <summary>
/// The send SMS async.
/// </summary>
/// <param name="mobile">
/// The mobile.
/// </param>
/// <param name="countryId">
/// The country id.
/// </param>
/// <param name="message">
/// The message.
/// </param>
/// <param name="templateId">
/// The message.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendSMSAsync(string mobile, int countryId, string message, string templateId);
/// <summary>
/// The send welcome message async.
/// </summary>
/// <param name="mobile">
/// The mobile.
/// </param>
/// <param name="fullName">
/// The full Name.
/// </param>
/// <param name="password">
/// The password.
/// </param>
/// <param name="createPasswordLink">
/// The create Password Link.
/// </param>
/// <param name="countryId">
/// The country Id.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendWelcomeMessageAsync(string mobile, string fullName, string password, string createPasswordLink, int countryId);
/// <summary>
/// The send ticket message async.
/// </summary>
/// <param name="mobile">
/// The mobile.
/// </param>
/// <param name="ticketNumber">
/// The ticket number.
/// </param>
/// <param name="countryId">
/// The country Id.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendTicketMessageAsync(string mobile, string ticketNumber, int countryId);
/// <summary>
/// The send ticket message async.
/// </summary>
/// <param name="mobile">
/// The mobile.
/// </param>
/// <param name="ticketNumber">
/// The ticket number.
/// </param>
/// <param name="countryId">
/// The country Id.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendPanicTicketMessageAsync(string mobile, string ticketNumber, int countryId);
/// <summary>
/// The send ticket message async.
/// </summary>
/// <param name="mobile">
/// The mobile.
/// </param>
/// <param name="ticketNumber">
/// The ticket number.
/// </param>
/// <param name="countryId">
/// The country Id.
/// </param>
/// <param name="message">
/// The message.
/// </param>
/// <param name="templateId">
/// The template id.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendPanicTicketMessageToUserAsync(string mobile, string ticketNumber, int countryId, string message, string templateId);
/// <summary>
/// The send ticket closed message async.
/// </summary>
/// <param name="mobile">
/// The mobile.
/// </param>
/// <param name="ticketNumber">
/// The ticket number.
/// </param>
/// <param name="countryId">
/// The country id.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendTicketClosedMessageAsync(string mobile, string ticketNumber, int countryId);
/// <summary>
/// The send appointment message async.
/// </summary>
/// <param name="appointment">
/// The appointment.
/// </param>
/// <param name="messageType">
/// The message Type.
/// </param>
/// <param name="displayTime">
/// The display time.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendAppointmentMessageAsync(AppointmentModel appointment, string messageType, string displayTime);
/// <summary>
/// The send payment message async.
/// </summary>
/// <param name="appointment">
/// The appointment.
/// </param>
/// <param name="displayTime">
/// The display time.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendPaymentMessageAsync(AppointmentModel appointment, string displayTime);
/// <summary>
/// The send reset password async.
/// </summary>
/// <param name="mobile">
/// The mobile.
/// </param>
/// <param name="fullName">
/// The full Name.
/// </param>
/// <param name="accountType">
/// The account Type.
/// </param>
/// <param name="resetPasswordLink">
/// The reset Password Link.
/// </param>
/// <param name="countryId">
/// The country Id.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendResetPasswordAsync(string mobile, string fullName, string accountType, string resetPasswordLink, int countryId);
/// <summary>
/// The send create password async.
/// </summary>
/// <param name="mobile">
/// The mobile.
/// </param>
/// <param name="fullName">
/// The full Name.
/// </param>
/// <param name="createPasswordLink">
/// The create Password Link.
/// </param>
/// <param name="countryId">
/// The country Id.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendCreatePasswordAsync(string mobile, string fullName, string createPasswordLink, int countryId);
/// <summary>
/// The send video link async.
/// </summary>
/// <param name="mobile">
/// The mobile.
/// </param>
/// <param name="countryId">
/// The country id.
/// </param>
/// <param name="link">
/// The link.
/// </param>
/// <param name="patientName">
/// The patient name.
/// </param>
/// <param name="providerName">
/// The provider name.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendVideoLinkAsync(string mobile, int countryId, string link, string patientName, string providerName);
/// <summary>
/// The send referral code link async.
/// </summary>
/// <param name="mobile">
/// The mobile.
/// </param>
/// <param name="countryId">
/// The country id.
/// </param>
/// <param name="referralCode"></param>
/// <param name="fullName"></param>
/// <param name="link">
/// The link.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendReferralCodeSMSAsync(string mobile, int countryId, string referralCode, string fullName, string link);
/// <summary>
/// The send referral code link async.
/// </summary>
/// <param name="mobile">
/// The mobile.
/// </param>
/// <param name="countryId">
/// The country id.
/// </param>
/// <param name="fullName"></param>
/// <param name="iosLink">
/// /// <param name="androidlink">
/// The link.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendReferralLinkAsync(string mobile, int countryId, string fullName, string iosLink, string androidlink);
/// <summary>
/// The send referral code link async.
/// </summary>
/// <param name="mobile">
/// The mobile.
/// </param>
/// <param name="countryId">
/// The country id.
/// </param>
/// <param name="fullName"></param>
/// <param name="iosLink">
/// /// <param name="androidlink">
/// The link.
/// </param>
/// <returns>
/// The <see cref="Task"/>.
/// </returns>
Task<bool> SendRescheduleInfoToProviderAsync(string mobile, string providerName, string patientName, int countryId, string date, string displayTime);
/// <summary>
/// Sends the lab report SMS.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="patientName">Name of the patient.</param>
/// <param name="url">The URL.</param>
/// <returns></returns>
Task<System.Tuple<bool, string>> SendLabReportSms(string mobile, string patientName, string url);
Task<bool> SendPdfLinkSms(string patientMobile, object patientName, string createPdfLink);
}
}
using Hims.Shared.EntityModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Hims.Api.Senders
{
/// <summary>
/// The WhatsAppSMSSender Interface
/// </summary>
public interface IWhatsAppSMSSender
{
/// <summary>
/// Sends the whats application message asynchronous.
/// </summary>
/// <param name="appointmentModel">The appointment model.</param>
/// <param name="displayTime">The display time.</param>
/// <param name="messageType">Type of the message.</param>
/// <param name="location">The location.</param>
/// <returns></returns>
public Task<bool> SendWhatsAppMessageAsync(AppointmentModel appointmentModel, string displayTime, string messageType,string location);
/// <summary>
/// Sends the otp asynchronous.
/// </summary>
/// <param name="Mobile">The mobile.</param>
/// <param name="Otp">The otp.</param>
/// <returns></returns>
public Task<bool> SendOTPAsync(string Mobile,string Otp);
/// <summary>
/// Sends the registered message.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="fullName">The full name.</param>
/// <returns></returns>
public Task<bool> SendRegisteredMessage(string mobile, string fullName);
/// <summary>
/// Sends the lab booking whats application message.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="fullName">The full name.</param>
/// <param name="LabName">Name of the lab.</param>
/// <returns></returns>
public Task<bool> SendLabBookingWhatsAppMessage(string mobile, string fullName, string LabName);
/// <summary>
/// Sends the lab cancelling whats application message.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="fullName">The full name.</param>
/// <param name="LabName">Name of the lab.</param>
/// <param name="requisitionNumber">The requisition number.</param>
/// <returns></returns>
public Task<bool> SendLabCancellingWhatsAppMessage(string mobile, string fullName, string LabName, string requisitionNumber);
/// <summary>
/// Sends the lab report whats application message.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="fullName">The full name.</param>
/// <param name="LabName">Name of the lab.</param>
/// <param name="labLink">The lab link.</param>
/// <returns></returns>
public Task<bool> SendLabReportWhatsAppMessage(string mobile, string fullName, string LabName, string labLink);
/// <summary>
/// Sends the scan whats application message.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="fullName">The full name.</param>
/// <param name="scanName">Name of the scan.</param>
/// <param name="scanDate">The scan date.</param>
/// <param name="scanTime">The scan time.</param>
/// <param name="type">The type.</param>
/// <param name="requisitionNumber">The requisition number.</param>
/// <returns></returns>
public Task<bool> SendScanWhatsAppMessage(string mobile, string fullName, string scanName , string scanDate, string scanTime, string type, string requisitionNumber);
/// <summary>
/// Sends the pharmacy whats application message.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="fullName">The full name.</param>
/// <param name="type">The type.</param>
/// <returns></returns>
public bool SendPharmacyWhatsAppMessage(string mobile, string fullName, string type);
/// <summary>
/// Sends the lab precaution whats application message.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="fullName">The full name.</param>
/// <param name="precautionText">The precaution text.</param>
/// <returns></returns>
public Task<bool> SendLabPrecautionWhatsAppMessage(string mobile, string fullName, string precautionText);
}
}
namespace Hims.Api.Senders
{
using System;
using System.Threading.Tasks;
using Dapper;
using Hims.Domain.Configurations;
using Newtonsoft.Json;
using Hims.Domain.Helpers;
using Hims.Domain.Services;
using Hims.Domain.Repositories.UnitOfWork;
using Hims.Shared.DataFilters;
using Hims.Shared.EntityModels;
using Hims.Shared.Library;
using Hims.Shared.UserModels;
using RestSharp;
/// <inheritdoc />
public class SMSSender : ISMSSender
{
/// <summary>
/// The application configuration.
/// </summary>
private readonly IApplicationConfiguration applicationConfiguration;
/// <summary>
/// The SMS helper.
/// </summary>
private readonly ISMSHelper smsHelper;
/// <summary>
/// The SMS sender.
/// </summary>
private readonly IKaleyraSMSHelper kaleyraSMSHelper;
/// <summary>
/// The country services.
/// </summary>
private readonly ICountryService countryServices;
/// <summary>
/// The country services.
/// </summary>
private readonly IUnitOfWork unitOfWork;
/// <summary>
/// The SMS server error.
/// </summary>
private readonly string smsServerError;
/// <summary>
/// The sms log services.
/// </summary>
private readonly ISmsLogService smsLogService;
/// <inheritdoc cref="ISMSSender" />
public SMSSender(IApplicationConfiguration applicationConfiguration, ISMSHelper smsHelper, ICountryService countryServices, IKaleyraSMSHelper kaleyraSMSHelper, IUnitOfWork unitOfWork, ISmsLogService smsLogService)
{
this.applicationConfiguration = applicationConfiguration;
this.smsHelper = smsHelper;
this.countryServices = countryServices;
this.kaleyraSMSHelper = kaleyraSMSHelper;
this.unitOfWork = unitOfWork;
this.smsLogService = smsLogService;
//this.smsServerError = "Due to SMS server issue we are unable to send messages at this moment. Please contact an administrator for further details.";
this.smsServerError = "SUCCESS";
}
/// <inheritdoc />
public async Task<OTPResponse> SendOTPAsync(string mobile, int countryId, string otp)
{
string where = "";
if (mobile.ToLower().Contains("umr"))
{
where += $@"where UPPER(p.""UMRNo"") = '{mobile.Trim().ToUpper()}'";
var query = $@"select p.""PatientId"",p.""Mobile"",p.""CountryId"" from ""Patient""p {where}";
var patientData = await this.unitOfWork.Current.QueryFirstOrDefaultAsync<PatientModel>(query);
if (patientData == null)
{
return null;
}
countryId = 1;
mobile = patientData.Mobile;
}
var country = await this.countryServices.FindAsync(countryId);
var text = $@"Select * from ""Practice"" limit 1";
var practice = await this.unitOfWork.Current.QueryFirstOrDefaultAsync<PracticeModel>(text);
var messageBody = $@"{otp} is your";
if (practice != null)
{
messageBody += $" {practice.FullName}- ";
}
messageBody += $@" Careaxes verification code. The verification code is confidential. For security reasons, do not share this code with anyone.";
var otpResponse = await this.kaleyraSMSHelper.SendSMSAsync(mobile, messageBody, country, "1207162031731062187");
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{otpResponse.Content}', now(), '{country.CountryCode + mobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
//if (!otpResponse.IsSuccessful)
//{
// otpResponse = await this.smsHelper.SendSMSAsync(mobile, $"{otp} is your {text}- Careaxes verification code. The verification code is confidential. For security reasons, do not share this code with anyone.", country);
//}
return otpResponse == null || !otpResponse.IsSuccessful ? new OTPResponse { OTP = otp, OTPExpiresIn = 180, Error = true, ErrorDescription = this.smsServerError } : new OTPResponse { OTP = otp, OTPExpiresIn = 180 };
}
/// <inheritdoc />
public async Task<bool> SendVideoLinkAsync(string mobile, int countryId, string link, string patientName, string providerName)
{
var country = await this.countryServices.FindAsync(countryId);
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(mobile, $"Hi {patientName}! Click on the link to join the video call with {providerName}. {link} - Virtual Steth Team", country, "1207162739139826333");
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + mobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
if (!smsResponse.IsSuccessful)
{
smsResponse = await this.smsHelper.SendSMSAsync(mobile, $"{link} is your Careaxes video conference link.", country);
}
return smsResponse != null && smsResponse.IsSuccessful;
}
/// <inheritdoc />
public async Task<bool> SendReferralCodeSMSAsync(string mobile, int countryId, string referralCode, string fullName, string link)
{
try
{
var country = await this.countryServices.FindAsync(countryId);
var message = $"Your friend {fullName} has invited you to join Careaxes. Book an Appointment with India's Best Doctors and get Discounts. Use Code -{referralCode} at Singup. {link}";
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(mobile, message, country, "1207161665327725960");
smsResponse.Content = JsonConvert.SerializeObject(smsResponse.Content);
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + mobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
if (!smsResponse.IsSuccessful)
{
smsResponse = await this.smsHelper.SendSMSAsync(mobile, message, country);
}
return smsResponse == null || smsResponse.IsSuccessful;
}
catch (Exception ex)
{
}
return false;
}
/// <inheritdoc />
public async Task<bool> SendReferralLinkAsync(string mobile, int countryId, string fullName, string iosLink, string androidLink)
{
var country = await this.countryServices.FindAsync(countryId);
var message = $"Dr.{fullName} has invited you to join Careaxes. Book an Appointment with India's Best Doctors and get Discounts. {iosLink},{androidLink}";
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(mobile, message, country, "1207161665327725960");
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + mobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
if (!smsResponse.IsSuccessful)
{
smsResponse = await this.smsHelper.SendSMSAsync(mobile, message, country);
}
return smsResponse == null || smsResponse.IsSuccessful;
}
/// <inheritdoc />
public async Task<bool> SendSMSAsync(string mobile, int countryId, string message, string templateId)
{
var country = await this.countryServices.FindAsync(countryId);
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(mobile, message, country, templateId);
smsResponse.Content = smsResponse.Content.Replace("'", " ");
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + mobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
if (!smsResponse.IsSuccessful)
{
smsResponse = await this.smsHelper.SendSMSAsync(mobile, message, country);
}
return smsResponse == null || !smsResponse.IsSuccessful;
}
/// <inheritdoc />
public async Task<bool> SendWelcomeMessageAsync(string mobile, string fullName, string password, string createPasswordLink, int countryId)
{
var country = await this.countryServices.FindAsync(countryId);
//var text = "Maa Sharadha";
var text = $@"Select * from ""Practice"" limit 1";
var practice = await this.unitOfWork.Current.QueryFirstOrDefaultAsync<PracticeModel>(text);
var messageBody = "Hi Welcome to";
if (practice != null)
{
messageBody += $" {practice.FullName},";
//var messageBody = string.IsNullOrEmpty(password)
// ? $"Hi {fullName}, Welcome to {text} - Careaxes. Thank you for registering with us. Click on the link below to create your password {createPasswordLink}"
// : $"Hi {fullName}, Welcome to {text} - Careaxes. Thank you for registering with us. Click on the link below to create your password {this.applicationConfiguration.WebsiteLink}";
}
messageBody += $@" -Careaxes. Thank you for registering with us. Click on the link below to create your password {createPasswordLink}";
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(mobile, messageBody, country, "1207162031747904710");
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + mobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
//if (!smsResponse.IsSuccessful)
//{
// smsResponse = await this.smsHelper.SendSMSAsync(mobile, messageBody, country);
//}
return smsResponse != null && smsResponse.IsSuccessful;
}
/// <inheritdoc />
public async Task<bool> SendTicketMessageAsync(string mobile, string ticketNumber, int countryId)
{
var country = await this.countryServices.FindAsync(countryId);
//var text = "Maa Sharadha";
var text = $@"Select * from ""Practice"" limit 1";
var practice = await this.unitOfWork.Current.QueryFirstOrDefaultAsync<PracticeModel>(text);
var messageBody = $@"Thanks for reaching out to us. A ticket has been raised with Reference ID: {ticketNumber}. Please save this ID for future references. - Careaxes,";
if (practice != null)
{
messageBody += $@" {practice.FullName}";
}
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(mobile, messageBody, country, "1207162031739756090");
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + mobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
//if (!smsResponse.IsSuccessful)
//{
// smsResponse = await this.smsHelper.SendSMSAsync(mobile, messageBody, country);
//}
return smsResponse != null && smsResponse.IsSuccessful;
}
/// <inheritdoc />
public async Task<bool> SendPanicTicketMessageAsync(string mobile, string ticketNumber, int countryId)
{
var country = await this.countryServices.FindAsync(countryId);
var messageBody = $@"We have alerted the doctor about an Emergency call request! Thanks for reaching out to us. A ticket has been raised with Reference ID: {ticketNumber}. Please note this for future reference.";
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(mobile, messageBody, country, "1207161665456703858");
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + mobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
//if (!smsResponse.IsSuccessful)
//{
// smsResponse = await this.smsHelper.SendSMSAsync(mobile, messageBody, country);
//}
return smsResponse != null && smsResponse.IsSuccessful;
}
/// <inheritdoc />
public async Task<bool> SendPanicTicketMessageToUserAsync(string mobile, string ticketNumber, int countryId, string message, string templateId)
{
var country = await this.countryServices.FindAsync(countryId);
var messageBody = message;
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(mobile, messageBody, country, templateId);
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + mobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
//if (!smsResponse.IsSuccessful)
//{
// smsResponse = await this.smsHelper.SendSMSAsync(mobile, messageBody, country);
//}
return smsResponse != null && smsResponse.IsSuccessful;
}
/// <inheritdoc />
public async Task<bool> SendTicketClosedMessageAsync(string mobile, string ticketNumber, int countryId)
{
var country = await this.countryServices.FindAsync(countryId);
//var text = "Maa Sharadha";
var text = $@"Select * from ""Practice"" limit 1";
var practice = await this.unitOfWork.Current.QueryFirstOrDefaultAsync<PracticeModel>(text);
var messageBody = "Your ticket with Reference ID. {ticketNumber} has been addressed and closed. Thank you! -Careaxes, ";
if (practice != null)
{
messageBody += $@"{practice.FullName}";
}
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(mobile, messageBody, country, "1207162031702944232");
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + mobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
//if (!smsResponse.IsSuccessful)
//{
// smsResponse = await this.smsHelper.SendSMSAsync(mobile, messageBody, country);
//}
return smsResponse != null && smsResponse.IsSuccessful;
}
/// <inheritdoc />
public async Task<bool> SendAppointmentMessageAsync(AppointmentModel appointment, string messageType, string displayTime)
{
//var text = "Maa Sharadha";
var text = $@"Select * from ""Practice"" limit 1";
//var practice = await this.unitOfWork.Current.QueryFirstOrDefaultAsync<PracticeModel>(text);
var text2 = $@"select l.""LocationId"",l.""Name"",l.""PracticeId"",p.""FullName"" as ""PracticeName"" from ""Location"" l
join ""Practice"" p on p.""PracticeId"" = l.""PracticeId"" where ""LocationId"" = {appointment.LocationId} limit 1";
var Location = await this.unitOfWork.Current.QueryFirstOrDefaultAsync<LocationModel>(text2);
var messageBody = $@"Hi {appointment.PatientName?.ToUpper()} , your Appointment with Dr.{appointment.ProviderName?.ToUpper()} on {appointment.AppointmentDate:dd MMMM yyyy} {displayTime} is confirmed. Your reference number is {appointment.AppointmentNo}. - Careaxes, ";
if (Location.PracticeName != null)
{
messageBody += $"{Location.PracticeName}";
}
var templateId = "1207162031771390021";
if (messageType == "has been rescheduled successfully")
{
messageBody = $"Hi {appointment.PatientName?.ToUpper()}! Your appointment has been successfully rescheduled with Dr {appointment.ProviderName?.ToUpper()} on {appointment.AppointmentDate:dd MMMM yyyy} {displayTime}. Your reference number - {appointment.AppointmentNo}. - Careaxes, {Location.PracticeName}";
templateId = "1207162031713978240";
}
if (messageType == "has been cancelled")
{
messageBody = $"Hi {appointment.PatientName?.ToUpper()}, Your appointment with Dr {appointment.ProviderName?.ToUpper()} has been cancelled successfully. Your reference number {appointment.AppointmentNo}. - Careaxes, {Location.PracticeName}";
templateId = "1207162031709201734";
}
var country = await this.countryServices.FindAsync(appointment.PatientCountryId);
if (country == null)
{
return false;
}
if (!string.IsNullOrEmpty(appointment.PatientMobile))
{
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(appointment.PatientMobile, messageBody, country, templateId);
//var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
// VALUES ('{smsResponse.Content}', '{DateTime.UtcNow}', '{country.CountryCode + appointment.PatientMobile}'); ";
var smsLogModel = new SMSLogModel
{
Response = smsResponse.Content,
SendedDate = DateTime.UtcNow,
ReceiverNumber = country.CountryCode + appointment.PatientMobile
};
await this.smsLogService.Insert(smsLogModel);
// await this.unitOfWork.Current.ExecuteAsync(quary);
//if (!smsResponse.IsSuccessful)
//{
// await this.smsHelper.SendSMSAsync(appointment.PatientMobile, messageBody, country);
//}
}
messageBody = $"Hi Dr {appointment.ProviderName?.ToUpper()}, Patient {appointment.PatientName?.ToUpper()} {messageType} an appointment with you on {appointment.AppointmentDate:dd MMMM yyyy} {displayTime}. - Careaxes, {Location.PracticeName}";
templateId = "1207162031845457190";
country = await this.countryServices.FindAsync(appointment.ProviderCountryId);
if (!string.IsNullOrEmpty(appointment.ProviderMobile) && appointment.EnableSMSAlerts == true)
{
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(appointment.ProviderMobile, messageBody, country, templateId);
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + appointment.ProviderMobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
//if (!smsResponse.IsSuccessful)
//{
// await this.smsHelper.SendSMSAsync(appointment.ProviderMobile, messageBody, country);
//}
}
return true;
}
/// <inheritdoc />
public async Task<bool> SendPaymentMessageAsync(AppointmentModel appointment, string displayTime)
{
//var text = "Maa Sharadha";
var text = $@"Select * from ""Practice"" limit 1";
var practice = await this.unitOfWork.Current.QueryFirstOrDefaultAsync<PracticeModel>(text);
var messageBody = $@"Hi {appointment.PatientName?.ToUpper()}, We have received your payment and your appointment has been successfully booked with Dr. {appointment.ProviderName?.ToUpper()}. Your Reference number is {appointment.AppointmentNo}. - Careaxes,";
if (practice != null)
{
messageBody += $" {practice.FullName}";
}
var country = await this.countryServices.FindAsync(appointment.PatientCountryId);
if (country == null)
{
return false;
}
if (!string.IsNullOrEmpty(appointment.PatientMobile))
{
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(appointment.PatientMobile, messageBody, country, "1207162031756363864");
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + appointment.PatientMobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
//if (!smsResponse.IsSuccessful)
//{
// await this.smsHelper.SendSMSAsync(appointment.PatientMobile, messageBody, country);
//}
}
messageBody = $"Hi Dr {appointment.ProviderName?.ToUpper()}, Patient {appointment.PatientName?.ToUpper()} booked an appointment with you on {appointment.AppointmentDate:dd MMMM yyyy} {displayTime}. - Careaxes, {practice?.FullName}";
country = await this.countryServices.FindAsync(appointment.PatientCountryId);
if (!string.IsNullOrEmpty(appointment.ProviderMobile) && appointment.EnableSMSAlerts == true)
{
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(appointment.ProviderMobile, messageBody, country, "1207161665432718357");
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + appointment.ProviderMobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
//if (!smsResponse.IsSuccessful)
//{
// await this.smsHelper.SendSMSAsync(appointment.ProviderMobile, messageBody, country);
//}
}
return true;
}
/// <inheritdoc />
public async Task<bool> SendResetPasswordAsync(string mobile, string fullName, string accountType, string resetPasswordLink, int countryId)
{
var country = await this.countryServices.FindAsync(countryId);
var msg = $"1 hour";
var messageBody = $"Hi {fullName}, Click on the link below to reset your password in {accountType}, you have {msg} to pick your password. After that, you'll have to ask for a new link. -Careaxes, {resetPasswordLink}";
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(mobile, messageBody, country, "1207162031691546485");
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + mobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
if (!smsResponse.IsSuccessful)
{
smsResponse = await this.smsHelper.SendSMSAsync(mobile, messageBody, country);
}
return smsResponse != null && smsResponse.IsSuccessful;
}
/// <inheritdoc />
public async Task<bool> SendCreatePasswordAsync(string mobile, string fullName, string createPasswordLink, int countryId)
{
var country = await this.countryServices.FindAsync(countryId);
var messageBody = $"Hi {fullName}, your account with {"Careaxes"}- Careaxes has been successfully created. To login, click on the link and create your password {createPasswordLink}";
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(mobile, messageBody, country, "1207162031722557699");
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + mobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
if (!smsResponse.IsSuccessful)
{
smsResponse = await this.smsHelper.SendSMSAsync(mobile, messageBody, country);
}
return smsResponse != null && smsResponse.IsSuccessful;
}
/// <inheritdoc />
public async Task<bool> SendRescheduleInfoToProviderAsync(string mobile, string providerName, string patientName, int countryId, string date, string displayTime)
{
//var text = "Maa Sharadha";
var text = $@"Select * from ""Practice"" limit 1";
var practice = await this.unitOfWork.Current.QueryFirstOrDefaultAsync<PracticeModel>(text);
var messageBody = $@"Hi Dr {providerName}! Patient {patientName} has been rescheduled an appointment with you on {date} {displayTime}. - Careaxes, ";
var country = await this.countryServices.FindAsync(countryId);
if (practice != null)
{
messageBody += $"{practice.FullName}";
}
var smsResponse = await this.kaleyraSMSHelper.SendSMSAsync(mobile, messageBody, country, "1207161665338758280");
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + mobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
if (!smsResponse.IsSuccessful)
{
smsResponse = await this.smsHelper.SendSMSAsync(mobile, messageBody, country);
}
return smsResponse != null && smsResponse.IsSuccessful;
}
/// <inheritdoc />
public async Task<Tuple<bool, string>> SendLabReportSms(string mobile, string patientName, string url)
{
var country = await this.unitOfWork.Countries.FindAsync(c => c.CountryName == "India");
var text = $@"Select * from ""Practice"" limit 1";
var practice = await this.unitOfWork.Current.QueryFirstOrDefaultAsync<PracticeModel>(text);
if (country == null)
{
return new Tuple<bool, string>(false, null);
}
var countryModel = new CountryModel
{
CountryName = country.CountryName,
CountryCode = country.CountryCode,
CountryId = country.CountryId,
SMSAuthorization = country.SMSAuthorization,
SMSFrom = country.SMSFrom,
SMSUrl = country.SMSUrl,
SMSUsername = country.SMSUsername
};
var urls = string.Empty;
var messageBody = $@"Hello {patientName}, greetings from ";
if (practice != null)
{
messageBody += $"{practice.FullName}";
}
messageBody += $@", your LabReport is ready. Click the link ";
var (smsResponse, urlss) = await this.kaleyraSMSHelper.SendReportSMSAsync(mobile, messageBody, countryModel, "1207164672062171339", url);
urls = urlss;
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + mobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
if (!smsResponse.IsSuccessful)
{
(smsResponse, urls) = await this.smsHelper.SendLabReportSMSAsync(mobile, messageBody, countryModel, url);
}
return new Tuple<bool, string>(smsResponse != null && smsResponse.IsSuccessful, urls);
}
public async Task<bool> SendPdfLinkSms(string patientMobile, object patientName, string createPdfLink)
{
var country = await this.unitOfWork.Countries.FindAsync(c => c.CountryName == "India");
var text = $@"Select * from ""Practice"" limit 1";
var practice = await this.unitOfWork.Current.QueryFirstOrDefaultAsync<PracticeModel>(text);
var countryModel = new CountryModel
{
CountryName = country.CountryName,
CountryCode = country.CountryCode,
CountryId = country.CountryId,
SMSAuthorization = country.SMSAuthorization,
SMSFrom = country.SMSFrom,
SMSUrl = country.SMSUrl,
SMSUsername = country.SMSUsername
};
var urls = string.Empty;
var messageBody = $@"Hello {patientName}, greetings from ";
if (practice != null)
{
messageBody += $"{practice.FullName}";
}
messageBody += $@", your DietPlan is ready. Click the link ";
var (smsResponse, urlss) = await this.kaleyraSMSHelper.SendPdfLinkSMSAsync(patientMobile, messageBody, countryModel, "1207164672062171339", createPdfLink);
urls = urlss;
var quary = $@"INSERT INTO public.""SMSLog""(""Response"", ""SendedDate"", ""ReceiverNumber"")
VALUES ('{smsResponse.Content}', now(), '{country.CountryCode + patientMobile}'); ";
await this.unitOfWork.Current.ExecuteAsync(quary);
if (!smsResponse.IsSuccessful)
{
(smsResponse, urls) = await this.smsHelper.SendLabReportSMSAsync(patientMobile, messageBody, countryModel, createPdfLink);
}
return smsResponse != null && smsResponse.IsSuccessful;
}
}
}
using Hims.Domain.Configurations;
using Hims.Shared.EntityModels;
using Hims.Shared.UserModels;
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Hims.Api.Senders
{
/// <summary>
/// The WhatsAppSMSSender.
/// </summary>
/// <seealso cref="Hims.Api.Senders.IWhatsAppSMSSender" />
public class WhatsAppSMSSender : IWhatsAppSMSSender
{
private readonly IPracticeDetailConfiguration practiceDetailConfiguration;
public WhatsAppSMSSender(IPracticeDetailConfiguration practiceDetailConfiguration)
{
this.practiceDetailConfiguration = practiceDetailConfiguration;
}
/// <summary>
/// Sends the otp asynchronous.
/// </summary>
/// <param name="Mobile">The mobile.</param>
/// <param name="Otp">The otp.</param>
/// <returns></returns>
public async Task<bool> SendOTPAsync(string Mobile, string Otp)
{
var body = new WhatsAppMessageModel
{
PatientMobile = Mobile,
OTPNumber = Otp
};
string url = "https://hims.careaxes.net/whatsAppApi/loginotp";
var client = new RestClient(url);
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddJsonBody(body);
var response = await client.ExecuteAsync(request);
if (response.IsSuccessful)
{
return true;
}
return false;
}
/// <summary>
/// Sends the whats application message asynchronous.
/// </summary>
/// <param name="appointmentModel">The appointment model.</param>
/// <param name="displayTime">The display time.</param>
/// <param name="messageType">Type of the message.</param>
/// <param name="location">The location.</param>
/// <returns></returns>
public async Task<bool> SendWhatsAppMessageAsync(AppointmentModel appointmentModel, string displayTime, string messageType,string location)
{
var body = new WhatsAppMessageModel
{
PatientMobile = appointmentModel.PatientMobile,
PatientName = appointmentModel.PatientName,
Receptionist = "CareAxes Bot",
DoctorName = appointmentModel.ProviderName,
AppointmentDate = appointmentModel.AppointmentDate.ToString("dd MMMM yyyy"),
AppointmentTime = displayTime,
BranchName = location,
AppointmentNo = appointmentModel.AppointmentNo,
PracticeName= this.practiceDetailConfiguration.PracticeName,
ContactNumber = this.practiceDetailConfiguration.ContactNumber
};
string url = "https://hims.careaxes.net/whatsAppApi/sendTxtMsg";
if (messageType == "has been rescheduled successfully")
{
url = "https://hims.careaxes.net/whatsAppApi/reshedule";
}
else if (messageType == "has been cancelled")
{
url = "https://hims.careaxes.net/whatsAppApi/Cancel";
}
var client = new RestClient(url);
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddJsonBody(body);
var response = await client.ExecuteAsync(request);
if (response.IsSuccessful)
{
return true;
}
return false;
}
/// <summary>
/// Sends the registered message.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="fullName">The full name.</param>
/// <returns></returns>
public async Task<bool> SendRegisteredMessage(string mobile, string fullName)
{
var body = new WhatsAppMessageModel
{
PatientMobile = mobile,
PatientName = fullName,
PracticeName = this.practiceDetailConfiguration.PracticeName
};
string url = "https://hims.careaxes.net/whatsAppApi/patientreg";
var client = new RestClient(url);
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddJsonBody(body);
var response = await client.ExecuteAsync(request);
if (response.IsSuccessful)
{
return true;
}
return false;
}
/// <summary>
/// Sends the lab booking whats application message.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="fullName">The full name.</param>
/// <param name="LabName">Name of the lab.</param>
/// <param name="PracticeName"></param>
/// <returns></returns>
public async Task<bool> SendLabBookingWhatsAppMessage(string mobile, string fullName, string LabName)
{
var body = new WhatsAppMessageModel
{
PatientMobile = mobile,
PatientName = fullName,
LabName=LabName,
PracticeName = this.practiceDetailConfiguration.PracticeName,
ContactNumber = this.practiceDetailConfiguration.ContactNumber
};
string url = "https://hims.careaxes.net/whatsAppApi/labbooking";
var client = new RestClient(url);
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddJsonBody(body);
var response = await client.ExecuteAsync(request);
if (response.IsSuccessful)
{
return true;
}
return false;
}
/// <summary>
/// Sends the lab precaution whats application message.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="fullName">The full name.</param>
/// <param name="precautionMessage">The precaution message.</param>
/// <returns></returns>
public async Task<bool> SendLabPrecautionWhatsAppMessage(string mobile, string fullName, string precautionMessage)
{
var body = new WhatsAppMessageModel
{
PatientMobile = mobile,
PatientName = fullName,
Message = precautionMessage,
PracticeName = this.practiceDetailConfiguration.PracticeName,
ContactNumber = this.practiceDetailConfiguration.ContactNumber
};
string url = "https://hims.careaxes.net/whatsAppApi/sendLabPrecautions";
var client = new RestClient(url);
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddJsonBody(body);
var response = await client.ExecuteAsync(request);
if (response.IsSuccessful)
{
return true;
}
return false;
}
/// <summary>
/// Sends the lab cancelling whats application message.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="fullName">The full name.</param>
/// <param name="LabName">Name of the lab.</param>
/// <param name="requisitionNumber">The requisition number.</param>
/// <returns></returns>
public async Task<bool> SendLabCancellingWhatsAppMessage(string mobile, string fullName, string LabName, string requisitionNumber)
{
var body = new WhatsAppMessageModel
{
PatientMobile = mobile,
PatientName = fullName,
LabName = LabName,
RequisitionNumber = requisitionNumber,
PracticeName = this.practiceDetailConfiguration.PracticeName,
ContactNumber = this.practiceDetailConfiguration.ContactNumber
};
string url = "https://hims.careaxes.net/whatsAppApi/labcancel";
var client = new RestClient(url);
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddJsonBody(body);
var response = await client.ExecuteAsync(request);
if (response.IsSuccessful)
{
return true;
}
return false;
}
/// <summary>
/// Sends the lab report whats application message.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="fullName">The full name.</param>
/// <param name="LabName">Name of the lab.</param>
/// <param name="labLink">The lab link.</param>
/// <returns></returns>
public async Task<bool> SendLabReportWhatsAppMessage(string mobile, string fullName, string LabName, string labLink)
{
var body = new WhatsAppMessageModel
{
PatientMobile = mobile,
PatientName = fullName,
LabName = LabName,
LabLink = labLink,
ContactNumber = this.practiceDetailConfiguration.ContactNumber
};
string url = "https://hims.careaxes.net/whatsAppApi/labreports";
var client = new RestClient(url);
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddJsonBody(body);
var response = await client.ExecuteAsync(request);
if (response.IsSuccessful)
{
return true;
}
return false;
}
/// <summary>
/// Sends the scan whats application message.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="fullName">The full name.</param>
/// <param name="scanName">Name of the scan.</param>
/// <param name="scanDate">The scan date.</param>
/// <param name="scanTime">The scan time.</param>
/// <param name="type">The type.</param>
/// <param name="requisitionNumber">The requisition number.</param>
/// <returns></returns>
public async Task<bool> SendScanWhatsAppMessage(string mobile, string fullName, string scanName,string scanDate, string scanTime, string type, string requisitionNumber)
{
DateTime time = Convert.ToDateTime(scanTime);
scanTime = time.ToString("hh:mm tt");
var body = new WhatsAppMessageModel
{
PatientMobile = mobile,
PatientName = fullName,
ScanName = scanName,
RequisitionNumber=requisitionNumber,
ScanDateTime = scanDate +" " + scanTime,
PracticeName = this.practiceDetailConfiguration.PracticeName,
ContactNumber = this.practiceDetailConfiguration.ContactNumber
};
string url = "https://hims.careaxes.net/whatsAppApi/scanbooking";
switch (type)
{
case "ScanBook":
url= "https://hims.careaxes.net/whatsAppApi/scanbooking";
break;
case "ScanRescheduele":
url = "https://hims.careaxes.net/whatsAppApi/scanreschedule";
break;
case "ScanCancel":
url = "https://hims.careaxes.net/whatsAppApi/scancancel";
body.ScanDateTime = null;
break;
}
var client = new RestClient(url);
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddJsonBody(body);
var response = await client.ExecuteAsync(request);
if (response.IsSuccessful)
{
return true;
}
return false;
}
/// <summary>
/// Sends the pharmacy whats application message.
/// </summary>
/// <param name="mobile">The mobile.</param>
/// <param name="fullName">The full name.</param>
/// <param name="type">The type.</param>
/// <returns></returns>
public bool SendPharmacyWhatsAppMessage(string mobile, string fullName, string type)
{
var body = new WhatsAppMessageModel
{
PatientMobile = mobile,
PatientName = fullName,
PharmacyName = "",
ContactNumber = this.practiceDetailConfiguration.ContactNumber
};
string url = "https://hims.careaxes.net/whatsAppApi/pharmacysale";
switch (type)
{
case "PharmacySale":
url = "https://hims.careaxes.net/whatsAppApi/pharmacysale";
break;
case "PharmacyReturn":
url = "https://hims.careaxes.net/whatsAppApi/pharmacyreturn";
break;
}
var client = new RestClient(url);
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddJsonBody(body);
var response = client.Execute(request);
if (response.IsSuccessful)
{
return true;
}
return false;
}
}
}
namespace Hims.Api.Services
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
using Domain.Services;
using IdentityModel;
using IdentityServer4.Models;
using IdentityServer4.Services;
using Shared.EntityModels;
/// <inheritdoc />
/// <summary>
/// The profile service.
/// </summary>
public class ProfileServices : IProfileService
{
/// <summary>
/// The account services.
/// </summary>
private readonly IAccountService accountServices;
/// <inheritdoc cref="accountServices" />
public ProfileServices(IAccountService accountServices) => this.accountServices = accountServices;
/// <inheritdoc />
public async Task GetProfileDataAsync(ProfileDataRequestContext context)
{
var accountId = GetAccountId(context.Subject.Claims);
if (accountId > 0)
{
var role = await this.accountServices.GetRoleAsync(accountId);
var claims = FetchClaims(role);
context.IssuedClaims.AddRange(claims);
}
}
/// <inheritdoc />
public async Task IsActiveAsync(IsActiveContext context)
{
var accountId = GetAccountId(context.Subject.Claims);
context.IsActive = await Task.Run(() => accountId > 0);
}
/// <summary>
/// The get role id.
/// </summary>
/// <param name="claims">
/// The claims.
/// </param>
/// <returns>
/// The <see cref="int"/>.
/// </returns>
private static int GetAccountId(IEnumerable<Claim> claims)
{
var accountIdClaim = claims.FirstOrDefault(x => x.Type == "sub");
if (accountIdClaim == null || string.IsNullOrEmpty(accountIdClaim.Value))
{
return 0;
}
return !string.IsNullOrEmpty(accountIdClaim.Value) && int.Parse(accountIdClaim.Value) > 0
? Convert.ToInt32(accountIdClaim.Value)
: 0;
}
/// <summary>
/// The get user claims.
/// </summary>
/// <param name="role">
/// The role model.
/// </param>
/// <returns>
/// The claims.
/// </returns>
private static IEnumerable<Claim> FetchClaims(RoleModel role) =>
new List<Claim>
{
new Claim("roleId", role.RoleId.ToString(), ClaimValueTypes.Integer),
new Claim(JwtClaimTypes.Role, role.RoleName)
};
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>API Documentation | Careaxes</title>
<meta content="Careaxes" name="description">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="application-name" content="Careaxes REST API" />
<link rel="shortcut icon" href="../assets/images/favicon.png">
<link type="text/css" href="../assets/fonts/style.css" rel="stylesheet">
<link type="text/css" href="../assets/css/bootstrap.min.css" rel="stylesheet">
<link type="text/css" href="../assets/css/style.css" rel="stylesheet">
<link type="text/css" href="../assets/css/custom.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="./swagger-ui.css">
%(HeadContent)
</head>
<body>
<div id="header-holder" class="inner-header hosting-page">
<div class="bg-animation"></div>
<nav id="nav" class="navbar navbar-default">
<div class="container-fluid">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="navbar-header">
<button aria-expanded="false" type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="logo-holder" href="javascript:;" onclick="onGoToHome();">
<div class="logo"></div>
</a>
</div>
<div style="height: 1px;" role="main" aria-expanded="false" class="navbar-collapse collapse" id="bs">
<ul class="nav navbar-nav navbar-right">
<li><a href="javascript:;" onclick="onGoToHome();">Home</a></li>
<li class="active"><a href="javascript:;">API Documentation</a></li>
<li><a href="javascript:;" onclick="onGoToSwagger();">Swagger Document</a></li>
<li><a href="javascript:;" onclick="onGoToIdentityServer();">Identity Server Document</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</nav>
<div id="page-head" class="container-fluid">
<div class="container">
<div class="row">
<div class="col-md-12 text-center">
<div class="page-title">API Documentation</div>
<div id="page-icon">
<div class="pricing-icon">
<img src="../assets/images/service-icon1.svg" alt="Service 1">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid swagger-ui-container">
<div class="container">
<div id="swagger-ui"></div>
</div>
</div>
<div id="footer" class="container-fluid">
<div class="container">
<div class="row">
<div class="col-lg-6">
<p>
@Copyright <span id="spYear"></span> - All rights reserved.
</p>
</div>
<div class="col-lg-6" align="right">
<a href="javascript:;">Terms</a>
<a href="javascript:;">Privacy</a>
<a href="javascript:;">Policy</a>
<a href="javascript:document.body.scrollTop = 0;document.documentElement.scrollTop = 0;">Go to Top</a>
</div>
</div>
</div>
</div>
<!-- Workaround for https://github.com/swagger-api/swagger-editor/issues/1371 -->
<script>
if (window.navigator.userAgent.indexOf("Edge") > -1) {
console.log("Removing native Edge fetch in favor of swagger-ui's polyfill")
window.fetch = undefined;
}
</script>
<script type="text/javascript" src="../assets/js/jquery.min.js"></script>
<script type="text/javascript" src="../assets/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../assets/js/swagger.js"></script>
<script type="text/javascript" src="./swagger-ui-bundle.js"></script>
<script type="text/javascript" src="./swagger-ui-standalone-preset.js"></script>
<script type="text/javascript">
$(function () {
window.$("#spYear").text(new Date().getFullYear());
});
window.onload = function () {
const configObject = JSON.parse('%(ConfigObject)');
const oauthConfigObject = JSON.parse('%(OAuthConfigObject)');
// Apply mandatory parameters
configObject.dom_id = "#swagger-ui";
configObject.presets = [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset];
configObject.layout = "StandaloneLayout";
// Build a system
const CaseInsensitiveFilterPlugin = function (system) {
return {
fn: {
opsFilter: (taggedOps, phrase) => taggedOps.filter((tagObj, tag) => {
return tag.toLowerCase().indexOf(phrase.toLowerCase()) !== -1
})
}
}
};
configObject.plugins = [CaseInsensitiveFilterPlugin];
// If oauth2RedirectUrl isn't specified, use the built-in default
if (!configObject.hasOwnProperty("oauth2RedirectUrl"))
configObject.oauth2RedirectUrl =
window.location.href.replace("index.html", "oauth2-redirect.html").split('#')[0];
// Begin Swagger UI call region
const ui = SwaggerUIBundle(configObject);
ui.initOAuth(oauthConfigObject);
window.ui = ui;
}
</script>
</body>
</html>
\ No newline at end of file
namespace Hims.Api.Utilities
{
using System;
using Microsoft.AspNetCore.Mvc;
/// <inheritdoc />
/// <summary>
/// The base controller.
/// </summary>
public class BaseController : Controller
{
/// <summary>
/// The mail server error.
/// </summary>
/// <returns>
/// The <see cref="string"/>.
/// </returns>
protected string MailServerError() => "Due to mail server issue we are unable to send mails at this moment. Please contact an administrator for further details.";
/// <summary>
/// The SMS server error.
/// </summary>
/// <returns>
/// The <see cref="string"/>.
/// </returns>
// protected string SMSServerError() => "Due to SMS server issue we are unable to send messages at this moment. Please contact an administrator for further details.";
protected string SMSServerError() => "SUCCESSS";
/// <summary>
/// The success.
/// </summary>
/// <param name="model">
/// The model.
/// </param>
/// <returns>
/// The <see cref="ObjectResult"/>.
/// </returns>
protected ObjectResult Success(object model = null) => this.StatusCode(200, model);
/// <summary>
/// The bad request.
/// </summary>
/// <returns>
/// The <see cref="ObjectResult"/>.
/// </returns>
protected new ObjectResult BadRequest() => this.StatusCode(400, string.Empty);
/// <summary>
/// The bad request.
/// </summary>
/// <param name="message">
/// The message.
/// </param>
/// <returns>
/// The <see cref="ObjectResult"/>.
/// </returns>
protected ObjectResult BadRequest(string message) => this.StatusCode(400, message ?? string.Empty);
/// <summary>
/// The failed request.
/// </summary>
/// <returns>
/// The <see cref="StatusCodeResult"/>.
/// </returns>
protected ObjectResult Failed() => this.StatusCode(417, "Sorry error occurred, Please try again later.");
/// <summary>
/// The failed request.
/// </summary>
/// <param name="message">
/// The message.
/// </param>
/// <returns>
/// The <see cref="ObjectResult"/>.
/// </returns>
protected ObjectResult Failed(string message) => this.StatusCode(417, message ?? string.Empty);
/// <summary>
/// The forbidden request.
/// </summary>
/// <param name="message">
/// The message.
/// </param>
/// <returns>
/// The <see cref="ObjectResult"/>.
/// </returns>
protected ObjectResult Forbidden(string message) => this.StatusCode(403, message ?? string.Empty);
/// <summary>
/// The server error.
/// </summary>
/// <returns>
/// The <see cref="StatusCodeResult"/>.
/// </returns>
protected ObjectResult ServerError() => this.StatusCode(500, "Sorry error occurred, Please try again later.");
/// <summary>
/// The server error.
/// </summary>
/// <param name="message">
/// The message.
/// </param>
/// <returns>
/// The <see cref="StatusCodeResult"/>.
/// </returns>
protected ObjectResult ServerError(string message) => this.StatusCode(500, message);
/// <summary>
/// The server error.
/// </summary>
/// <param name="exception">
/// The exception.
/// </param>
/// <returns>
/// The <see cref="StatusCodeResult"/>.
/// </returns>
protected ObjectResult ServerError(Exception exception) => this.StatusCode(500, exception.Message);
}
}
\ No newline at end of file
namespace Hims.Api.Validators
{
using System;
using System.Threading.Tasks;
using Domain.Services;
using IdentityServer4.Models;
using IdentityServer4.Validation;
using Shared.Library;
/// <inheritdoc />
public class ResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
{
/// <summary>
/// The account services.
/// </summary>
private readonly IAccountService accountServices;
/// <inheritdoc cref="accountServices" />
public ResourceOwnerPasswordValidator(IAccountService accountServices) => this.accountServices = accountServices;
/// <inheritdoc />
public async Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
{
try
{
if (context.UserName == context.Password)
{
var accountId = context.UserName.Replace("@@", string.Empty);
context.Result = new GrantValidationResult(accountId, "custom");
}
else
{
//var values = context.UserName.Split("!!");
//context.UserName = values[0];
//var accountTypes = values[1];
var (accountStatus, accountId) = await this.accountServices.ValidateAsync(context.UserName, context.Password);
if (accountStatus != UserAccountStatus.Success)
{
context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant, accountStatus.ToString());
return;
}
context.Result = new GrantValidationResult(accountId.ToString(), "custom");
}
}
catch
{
context.Result = new GrantValidationResult(TokenRequestErrors.InvalidRequest, UserAccountStatus.ServerError.ToString());
}
}
}
}
\ No newline at end of file
@using Newtonsoft.Json
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>Identity Server Document | Careaxes</title>
<meta content="Careaxes" name="description">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="application-name" content="Careaxes REST API"/>
<link rel="shortcut icon" href="@Url.Content("~/assets/images/favicon.png")">
<link type="text/css" href="@Url.Content("~/assets/fonts/style.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/bootstrap.min.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/jquery.jsonview.min.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/style.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/custom.css")" rel="stylesheet">
</head>
<body>
<div id="header-holder" class="inner-header hosting-page">
<div class="bg-animation"></div>
<nav id="nav" class="navbar navbar-default">
<div class="container-fluid">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="navbar-header">
<button aria-expanded="false" type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="logo-holder" href="@Url.Action("Index")">
<div class="logo"></div>
</a>
</div>
<div style="height: 1px;" role="main" aria-expanded="false" class="navbar-collapse collapse" id="bs">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="@Url.Action("Index")">Home</a>
</li>
<li>
<a href="@ViewBag.ApiDocsUrl">API Documentation</a>
</li>
<li>
<a href="@Url.Action("Swagger")">Swagger Document</a>
</li>
<li class="active">
<a href="@Url.Action("IdentityServer")">Identity Server Document</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</nav>
<div id="page-head" class="container-fluid">
<div class="container">
<div class="row">
<div class="col-md-12 text-center">
<div class="page-title">Identity Server Document</div>
<div id="page-icon">
<div class="pricing-icon">
<img src="@Url.Content("~/assets/images/service-icon4.svg")" alt="Service 3">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid json-container">
<div class="container">
<div id="json-viewer"></div>
</div>
</div>
<div id="footer" class="container-fluid">
<div class="container">
<div class="row">
<div class="col-lg-6">
<p>
@@Copyright @DateTime.Now.Year - All rights reserved.
</p>
</div>
<div class="col-lg-6" align="right">
<a href="javascript:;">Terms</a>
<a href="javascript:;">Privacy</a>
<a href="javascript:;">Policy</a>
<a href="javascript:document.body.scrollTop = 0;document.documentElement.scrollTop = 0;">Go to Top</a>
</div>
</div>
</div>
</div>
<script type="text/javascript" src="@Url.Content("~/assets/js/jquery.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/assets/js/bootstrap.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/assets/js/jquery.jsonview.min.js")"></script>
<script type="text/javascript">
$(function() {
const json = @Html.Raw(JsonConvert.SerializeObject(ViewBag.Result, Formatting.Indented));
window.$("#json-viewer").JSONView(json);
});
</script>
</body>
</html>
\ No newline at end of file
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>API Home | Careaxes</title>
<meta content="Careaxes" name="description">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="application-name" content="Careaxes REST API" />
<link rel="shortcut icon" href="@Url.Content("~/assets/images/favicon.png")">
<link type="text/css" href="@Url.Content("~/assets/fonts/style.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/bootstrap.min.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/slick.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/style.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/custom.css")" rel="stylesheet">
</head>
<body>
<div id="header-holder" class="main-header">
<div class="bg-animation">
<div class="graphic-show">
<img class="fix-size" src="@Url.Content("~/assets/images/graphic1.png")" alt="Graphic 1">
<img class="img img1" src="@Url.Content("~/assets/images/graphic1.png")" alt="Graphic 1">
<img class="img img2" src="@Url.Content("~/assets/images/graphic2.png")" alt="Graphic 2">
<img class="img img3" src="@Url.Content("~/assets/images/graphic3.png")" alt="Graphic 3">
</div>
</div>
<nav id="nav" class="navbar navbar-default">
<div class="container-fluid">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="navbar-header">
<button aria-expanded="false" type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="logo-holder" href="@Url.Action("Index")">
<div class="logo"></div>
</a>
</div>
<div style="height: 1px;" role="main" aria-expanded="false" class="navbar-collapse collapse" id="bs">
<ul class="nav navbar-nav navbar-right">
<li class="active">
<a href="@Url.Action("Index")">Home</a>
</li>
<li>
<a href="@ViewBag.ApiDocsUrl">API Documentation</a>
</li>
<li>
<a href="@Url.Action("Swagger")">Swagger Document</a>
</li>
<li>
<a href="@Url.Action("IdentityServer")">Identity Server Document</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</nav>
<div id="top-content" class="container-fluid">
<div class="container">
<div class="row">
<div class="col-md-6">
<div id="main-slider">
<div class="slide">
<div class="noti-holder">
<div class="noti">
<span class="badge">New</span><span class="text">Added new packages in API documentation.</span>
</div>
</div>
<div class="spacer"></div>
<div class="big-title">Connect your <span>doctor,</span><br>anywhere, anytime.</div>
<p>
Careaxes gives you a live private connection to your doctor from anywhere in the world. All of our doctors are experienced, friendly and professional and they want to give the best treatment to the patients.
</p>
<div class="btn-holder">
<a href="@ViewBag.ApiDocsUrl" class="ybtn ybtn-white ybtn-shadow">View API Documentation</a>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<img class="header-graphic" src="assets/images/graphic1.png" alt="Graphic 1" />
</div>
</div>
</div>
</div>
</div>
<div id="services" class="container-fluid">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="row-title">Our API</div>
<div class="row-subtitle">Designed to satisfy your creative needs.</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 col-md-6">
<div class="service-box">
<div class="service-icon">
<img src="@Url.Content("~/assets/images/service-icon1.svg")" alt="Identity Server">
</div>
<div class="service-title">
<a href="@ViewBag.SwaggerUrl" target="_blank">Swagger</a>
</div>
<div class="service-details">
<p>
Swagger offers the most powerful and easiest to use tools to take full advantage of the OpenAPI Specification.
</p>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div class="service-box">
<div class="service-icon">
<img src="@Url.Content("~/assets/images/service-icon2.svg")" alt="Swagger">
</div>
<div class="service-title">
<a href="@ViewBag.IdentityServerUrl" target="_blank">Identity Server</a>
</div>
<div class="service-details">
<p>
the Open Source OpenID Connect and OAuth 2.0 framework for .NET.
Identity Server is OpenID Certified and part of the .NET Foundation.
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="footer" class="container-fluid">
<div class="container">
<div class="row">
<div class="col-lg-6">
<p>
@@Copyright @DateTime.Now.Year - All rights reserved.
</p>
</div>
<div class="col-lg-6" align="right">
<a href="javascript:;">Terms</a>
<a href="javascript:;">Privacy</a>
<a href="javascript:;">Policy</a>
<a href="javascript:document.body.scrollTop = 0;document.documentElement.scrollTop = 0;">Go to Top</a>
</div>
</div>
</div>
</div>
<script type="text/javascript" src="@Url.Content("~/assets/js/jquery.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/assets/js/bootstrap.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/assets/js/slick.min.js")"></script>
<script type="text/javascript">
var mainSlider = $("#main-slider", "#top-content");
mainSlider.slick({
dots: true,
speed: 1000,
autoplay: true,
autoplaySpeed: 5000,
arrows: false,
infinite: true,
slidesToShow: 1,
slidesToScroll: 1
});
mainSlider.on('afterChange',
function () {
window.$(".slide > div:nth-child(1)", '#main-slider').removeClass("animated");
window.$(".slide > div:nth-child(2)", '#main-slider').removeClass("animated animation-delay1");
window.$(".slick-active > div:nth-child(1)", '#main-slider').addClass("animated");
window.$(".slick-active > div:nth-child(2)", '#main-slider').addClass("animated animation-delay1");
});
</script>
</body>
</html>
\ No newline at end of file
@using Newtonsoft.Json
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>Swagger Document | Careaxes</title>
<meta content="Careaxes" name="description">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="application-name" content="Careaxes REST API"/>
<link rel="shortcut icon" href="@Url.Content("~/assets/images/favicon.png")">
<link type="text/css" href="@Url.Content("~/assets/fonts/style.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/bootstrap.min.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/jquery.jsonview.min.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/style.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/custom.css")" rel="stylesheet">
</head>
<body>
<div id="header-holder" class="inner-header hosting-page">
<div class="bg-animation"></div>
<nav id="nav" class="navbar navbar-default">
<div class="container-fluid">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="navbar-header">
<button aria-expanded="false" type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="logo-holder" href="@Url.Action("Index")">
<div class="logo"></div>
</a>
</div>
<div style="height: 1px;" role="main" aria-expanded="false" class="navbar-collapse collapse" id="bs">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="@Url.Action("Index")">Home</a>
</li>
<li>
<a href="@ViewBag.ApiDocsUrl">API Documentation</a>
</li>
<li class="active">
<a href="@Url.Action("Swagger")">Swagger Document</a>
</li>
<li>
<a href="@Url.Action("IdentityServer")">Identity Server Document</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</nav>
<div id="page-head" class="container-fluid">
<div class="container">
<div class="row">
<div class="col-md-12 text-center">
<div class="page-title">Swagger Document</div>
<div id="page-icon">
<div class="pricing-icon">
<img src="@Url.Content("~/assets/images/service-icon3.svg")" alt="Service 3">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid json-container">
<div class="container">
<div id="json-viewer"></div>
</div>
</div>
<div id="footer" class="container-fluid">
<div class="container">
<div class="row">
<div class="col-lg-6">
<p>
@@Copyright @DateTime.Now.Year - All rights reserved.
</p>
</div>
<div class="col-lg-6" align="right">
<a href="javascript:;">Terms</a>
<a href="javascript:;">Privacy</a>
<a href="javascript:;">Policy</a>
<a href="javascript:document.body.scrollTop = 0;document.documentElement.scrollTop = 0;">Go to Top</a>
</div>
</div>
</div>
</div>
<script type="text/javascript" src="@Url.Content("~/assets/js/jquery.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/assets/js/bootstrap.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/assets/js/jquery.jsonview.min.js")"></script>
<script type="text/javascript">
$(function() {
const json = @Html.Raw(JsonConvert.SerializeObject(ViewBag.Result, Formatting.Indented));
window.$("#json-viewer").JSONView(json);
window.$("#json-viewer").JSONView("collapse", [2]);
});
</script>
</body>
</html>
\ No newline at end of file
@model Hims.Shared.Library.UserAccount
<!DOCTYPE html>
<html>
<head>
<title>Create Password | Careaxes</title>
<meta content="Careaxes" name="description">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="application-name" content="Careaxes REST API" />
<link rel="shortcut icon" href="@Url.Content("~/assets/images/favicon.png")">
<link type="text/css" href="@Url.Content("~/assets/fonts/style.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/bootstrap.min.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/style.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/custom.css")" rel="stylesheet">
</head>
<body>
<div id="form-section" class="container-fluid">
<div class="row">
<div class="info-slider-holder">
<div class="info-holder">
<div class="icon" style="background-image: url(@Url.Content("~/assets/images/icon-white.png")"></div>
<h6>A Service you can anytime modify.</h6>
<div class="bold-title">
Connect your <span>doctor,</span><br>anywhere, anytime.
</div>
</div>
</div>
<div class="form-holder">
<div class="signin-signup-form">
<div class="form-items">
<img alt="Careaxes" class="form-logo" src="@Url.Content("~/assets/images/logo_dark.png")" />
<div class="form-title">Create your password</div>
<div class="details-holder">
<div>
@{
if (string.IsNullOrEmpty(Model.ThumbnailUrl))
{
<img alt="@Model.FullName" class="photo" src="@Url.Content("~/assets/images/avatar.png")">
}
else
{
<img alt="@Model.FullName" class="photo" src="@Model.ThumbnailUrl">
}
}
</div>
<div>
<h4>@Model.FullName</h4>
<h5 class="text-muted">@Model.RoleName - @(string.IsNullOrEmpty(Model.Email) ? ("(+" + Model.CountryCode + ") " + Model.Mobile) : Model.Email)</h5>
</div>
</div>
<div class="alert alert-danger" id="dvError" style="display: none">
<strong>Oh no!</strong> Sorry error occurred. Please try again later.
</div>
<div class="alert alert-success" id="dvSuccess" style="display: none">
<strong>Congratulations!</strong> Your password has been created successfully.
</div>
<form id="signinform">
<div class="form-text">
<label>Password</label>
<input type="password" id="password" name="password" autocomplete="nope" maxlength="50" placeholder="Your passsword">
</div>
<div class="form-text">
<label>Confirm Password</label>
<input type="password" id="confirmPassword" name="confirmPassword" autocomplete="nope" maxlength="50" placeholder="Confirm your passsword">
</div>
<div class="form-button">
<button id="submit" type="submit" class="ybtn ybtn-accent-color">Submit</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript" src="@Url.Content("~/assets/js/jquery.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/assets/js/jquery.validate.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/assets/js/additional-methods.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/assets/js/bootstrap.min.js")"></script>
<script type="text/javascript">
$(function() {
var passwordRegex = /(?=^.{9,}$)(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^A-Za-z0-9]).*/;
window.$.validator.addMethod('regex', function(value) { return value.match(passwordRegex) }, '');
window.$("#signinform").validate({
rules: {
password: {
required: true,
minlength: 4,
regex: false
},
confirmPassword: {
required: true,
minlength: 4,
equalTo: "#password"
}
},
messages: {
password: {
required: "Password is required",
minlength: "Your password must be at least 4 characters long",
regex: "Your password must contain 1 special character, 1 number, 1 lowercase letter and 1 uppercase letter"
},
confirmPassword: {
required: "Confirm password is required",
minlength: "Your confirm password must be at least 4 characters long",
equalTo: "Passwords are not matched"
}
},
submitHandler: function(form) {
window.$.ajax({
type: 'POST',
url: '@Url.Action("Create")',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({ "accountId": @Model.AccountId, "password": form.elements[0].value }),
beforeSend: function() {
window.$("#submit").prop("disabled", "disabled");
window.$("#submit").text("Loading...");
},
success: function(response) {
if (response) {
window.$("#dvError").hide();
window.$("#signinform").hide();
window.$("#dvSuccess").show();
} else {
window.$("#dvError").show();
window.$("#dvSuccess").hide();
}
},
error: function() {
window.$("#dvError").show();
window.$("#dvSuccess").hide();
},
complete: function() {
window.$("#submit").removeProp("disabled");
window.$("#submit").text("Submit");
}
});
}
});
});
</script>
</body>
</html>
\ No newline at end of file
@model Hims.Shared.Library.UserAccount
<!DOCTYPE html>
<html>
<head>
<title>Reset Password | Careaxes</title>
<meta content="Careaxes" name="description">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="application-name" content="Careaxes REST API"/>
<link rel="shortcut icon" href="@Url.Content("~/assets/images/favicon.png")">
<link type="text/css" href="@Url.Content("~/assets/fonts/style.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/bootstrap.min.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/style.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/custom.css")" rel="stylesheet">
</head>
<body>
<div id="form-section" class="container-fluid">
<div class="row">
<div class="info-slider-holder">
<div class="info-holder">
<div class="icon" style="background-image: url(@Url.Content("~/assets/images/icon-white.png")"></div>
<h6>A Service you can anytime modify.</h6>
<div class="bold-title">
Connect your <span>doctor,</span><br>anywhere, anytime.
</div>
</div>
</div>
<div class="form-holder">
<div class="signin-signup-form">
<div class="form-items">
<img alt="Careaxes" class="form-logo" src="@Url.Content("~/assets/images/logo_dark.png")"/>
<div class="form-title">Reset your password</div>
<div class="details-holder">
<div>
@{
if (string.IsNullOrEmpty(Model.ThumbnailUrl))
{
<img alt="@Model.FullName" class="photo" src="@Url.Content("~/assets/images/avatar.png")">
}
else
{
<img alt="@Model.FullName" class="photo" src="@Model.ThumbnailUrl">
}
}
</div>
<div>
<h4>@Model.FullName</h4>
<h5 class="text-muted">@Model.RoleName - @(string.IsNullOrEmpty(Model.Email) ? ("(+" + Model.CountryCode + ") " + Model.Mobile) : Model.Email)</h5>
</div>
</div>
<div class="alert alert-danger" id="dvError" style="display: none">
<strong>Oh no!</strong> Sorry error occurred. Please try again later.
</div>
<div class="alert alert-success" id="dvSuccess" style="display: none">
<strong>Congratulations!</strong> Your password has been reset successfully.
</div>
<form id="signinform">
<div class="form-text">
<label>New Password</label>
<input type="password" id="password" name="password" autocomplete="off" maxlength="50" placeholder="Your passsword">
</div>
<div class="form-text">
<label>Confirm Password</label>
<input type="password" id="confirmPassword" name="confirmPassword" autocomplete="off" maxlength="50" placeholder="Confirm your passsword">
</div>
<div class="form-button">
<button id="submit" type="submit" class="ybtn ybtn-accent-color">Submit</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript" src="@Url.Content("~/assets/js/jquery.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/assets/js/jquery.validate.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/assets/js/additional-methods.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/assets/js/bootstrap.min.js")"></script>
<script type="text/javascript">
$(function() {
var passwordRegex = /(?=^.{9,}$)(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^A-Za-z0-9]).*/;
window.$.validator.addMethod('regex', function(value) { return value.match(passwordRegex) }, '');
window.$("#signinform").validate({
rules: {
password: {
required: true,
minlength: 4,
regex: true
},
confirmPassword: {
required: true,
minlength: 4,
equalTo: "#password"
}
},
messages: {
password: {
required: "Password is required",
minlength: "Your password must be at least 4 characters long",
regex: "Your password must contain 1 special character, 1 number, 1 lowercase letter and 1 uppercase letter"
},
confirmPassword: {
required: "Confirm password is required",
minlength: "Your confirm password must be at least 4 characters long",
equalTo: "Passwords are not matched"
}
},
submitHandler: function(form) {
window.$.ajax({
type: 'POST',
url: '@Url.Action("Reset")',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({ "accountId": @Model.AccountId, "password": form.elements[0].value }),
beforeSend: function() {
window.$("#submit").prop("disabled", "disabled");
window.$("#submit").text("Loading...");
},
success: function(response) {
if (response) {
window.$("#dvError").hide();
window.$("#signinform").hide();
window.$("#dvSuccess").show();
} else {
window.$("#dvError").show();
window.$("#dvSuccess").hide();
}
},
error: function() {
window.$("#dvError").show();
window.$("#dvSuccess").hide();
},
complete: function() {
window.$("#submit").removeProp("disabled");
window.$("#submit").text("Submit");
}
});
}
});
});
</script>
</body>
</html>
\ No newline at end of file
@model Tuple<Hims.Shared.EntityModels.AppointmentLogModel, Hims.Domain.Configurations.IPayUConfiguration>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>Appointment Preview | Careaxes</title>
<meta content="Careaxes" name="description">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="application-name" content="Careaxes REST API"/>
<link rel="shortcut icon" href="@Url.Content("~/assets/images/favicon.png")">
<link type="text/css" href="@Url.Content("~/assets/fonts/style.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/bootstrap.min.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/style.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/custom.css")" rel="stylesheet">
</head>
<body>
<div class="appointment-container">
<div class="appointment-content">
@{
var appointmentLog = Model.Item1;
var config = Model.Item2;
var dateTime = new DateTime(appointmentLog.AppointmentTime.Ticks);
<form method="post" action="@config.PaymentURL">
<div class="appintment-header">
Appointment Preview
</div>
<div class="appintment-body">
<input type="hidden" name="key" value="@config.Key"/>
<input type="hidden" name="hash" value="@ViewBag.Hash"/>
<input type="hidden" name="txnid" value="@ViewBag.TransactionId"/>
<input type="hidden" name="productinfo" value="@ViewBag.ProductInfo"/>
<input type="hidden" name="firstname" value="@appointmentLog.PatientFirstName"/>
<input type="hidden" name="lastname" value="@appointmentLog.PatientLastName"/>
<input type="hidden" name="email" value="@appointmentLog.PatientEmail"/>
<input type="hidden" name="phone" value="@appointmentLog.PatientMobile"/>
<input type="hidden" name="country" value="@appointmentLog.PatientCountryName"/>
<input type="hidden" name="amount" value="@appointmentLog.Total"/>
<input type="hidden" name="udf1" value="@appointmentLog.AppointmentLogId"/>
<input type="hidden" name="surl" value="@config.SuccessLink"/>
<input type="hidden" name="furl" value="@config.FailureLink"/>
<input type="hidden" name="service_provider" value="@config.ServiceProvider"/>
<div class="row">
<div class="col-lg-12">
<div class="details-holder">
<div>
@{
if (string.IsNullOrEmpty(appointmentLog.ProviderThumbnailUrl))
{
<img alt="@appointmentLog.ProviderName" class="photo" src="@Url.Content("~/assets/images/avatar.png")">
}
else
{
<img alt="@appointmentLog.ProviderName" class="photo" src="@appointmentLog.ProviderThumbnailUrl">
}
}
</div>
<div>
<h4 class="text-capitalize">Dr. @appointmentLog.ProviderName</h4>
<h5 class="text-muted text-capitalize">@appointmentLog.PracticeName</h5>
</div>
</div>
<p class="label-text">
<span>Location</span><span>@appointmentLog.ProviderLocation</span>
</p>
<p class="label-text">
<span>Date</span><span>@appointmentLog.AppointmentDate.ToString("D")</span>
</p>
<p class="label-text">
<span>Time</span><span>@dateTime.ToString("hh:mm tt")</span>
</p>
<p class="label-text">
<span>Amount</span><span>@appointmentLog.CurrencySymbol @appointmentLog.Total.ToString("##.00")</span>
</p>
</div>
</div>
</div>
<div class="appintment-footer">
<div class="small-buttons">
<button type="submit" class="ybtn ybtn-accent-color" formtarget="_blank">Proceed to Payment</button>
<button type="button" class="ybtn ybtn-white ybtn-shadow">Cancel</button>
</div>
</div>
</form>
}
</div>
</div>
</body>
</html>
\ No newline at end of file
@model Hims.Domain.Configurations.ISalucroConfiguration
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
window.addEventListener("message", receiveMessage, false);
function returnResponse(data) {
document.getElementById("response").innerHTML = data.response;
$("#iframeModal").modal("hide");
}
function receiveMessage(event) {
returnResponse(event.data);
}
</script>
</head>
<body>
<div class="payment-content">
<form id="iframeForm" action="@Model.PaymentURL" method="post" target="iframe">
<input type="hidden" name="token" id="token" value='{"auth":{"user":"@Model.User","key":"@Model.Key"},"username":"@ViewBag.UserName","accounts":[{"patient_name":"@ViewBag.PatientName","account_number":"@ViewBag.PatientUmrNo","amount":"@ViewBag.Amount","email":"","phone":""}],"processing_id":"@ViewBag.ProcessingId","payment_fill":"pre_full","paymode":"@ViewBag.PayMode","payment_location":"Test Hospital","transaction_id":"@ViewBag.TransactionId","custom":"@ViewBag.Custom","custom1":"@ViewBag.Custom1","custom2":"@ViewBag.Custom2","custom3":"@ViewBag.Custom3","custom4":"@ViewBag.Custom4","custom5":"@ViewBag.Custom5","custom6":"@ViewBag.Custom6","response_url":"@Model.ResponseURL","return_url":"@Model.ReturnURL"}' />
<input type="hidden" name="mid" id="mid" value="@Model.MId" />
<input type="hidden" name="check_sum_hash" id="check_sum_hash" value="@ViewBag.CheckSumHash" />
<h3 class="text-center"><button id="paynow" type="submit" formtarget="_self">Pay Now</button></h3>
</form>
<div class="modal fade" id="iframeModal">
<div class="modal-dialog" style="min-width:90%;">
<div class="modal-content" id="iframeModalContent">
<iframe id="iframe" name="iframe" style="border:0; height:540px;" scrolling="yes" src="" width="100%"></iframe>
</div>
</div>
</div>
<script type="text/javascript">
var closeModal = function () {
$("#iframeModal").modal("hide");
}
$(function () {
$(document).on("click", "#paynow", function (mylogin) {
$('#iframeModal').modal('show');
});
});
function hideLoading() {
Loading(false);
}
function showLoading() {
Loading(true);
}
</script>
</div>
</body>
</html>
\ No newline at end of file
@model Hims.Domain.Configurations.ISalucroConfiguration
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<body>
<div class="patient-payment">
<form action="@Model.PatientPaymentURL" method="post">
<input type="hidden" name="token" id="token" value='{"auth":{"user":"@Model.User","key":"@Model.Key"},"username":"@Model.PatientAppUserName","accounts":[{"patient_name":"@ViewBag.PatientName","account_number":"@ViewBag.PatientUmrNo","amount":"@ViewBag.Amount","email":"@ViewBag.PatientEmail","phone":"@ViewBag.PatientMobile"}],"processing_id":"@ViewBag.ProcessingId","paymode":"","payment_source":"@Model.PaymentSource","custom":"@ViewBag.Custom","custom1":"@ViewBag.Custom1","response_url":"@Model.ResponseURL","return_url":"@Model.PatientAppReturnURL"}' />
<input type="hidden" name="mid" id="mid" value="@Model.MId" />
<input type="hidden" name="check_sum_hash" id="check_sum_hash" value="@ViewBag.CheckSumHash" />
</form>
</div>
</body>
</html>
\ No newline at end of file
<!-- ReSharper disable Html.Obsolete -->
@model Hims.Api.Models.MailTemplates.RejectProvider
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<!--[if gte mso 9]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="format-detection" content="date=no" />
<meta name="format-detection" content="address=no" />
<meta name="format-detection" content="telephone=no" />
<meta name="x-apple-disable-message-reformatting" />
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Metropolis:400,400i,600,600i&display=swap" rel="stylesheet" />
<!--<![endif]-->
<title>Provider Registration Approved | Careaxes</title>
<!--[if gte mso 9]>
<style type="text/css" media="all">
sup { font-size: 100% !important; }
</style>
<![endif]-->
<!-- body, html, table, thead, tbody, tr, td, div, a, span { font-family: Arial, sans-serif !important; } -->
<style type="text/css" media="screen">
body {
padding: 0 !important;
margin: 0 auto !important;
display: block !important;
min-width: 100% !important;
width: 100% !important;
background: #f4ecfa;
-webkit-text-size-adjust: none
}
a {
color: #3195ff;
text-decoration: none
}
p {
padding: 0 !important;
margin: 0 !important
}
img {
margin: 0 !important;
-ms-interpolation-mode: bicubic; /* Allow smoother rendering of resized image in Internet Explorer */
}
a[x-apple-data-detectors] {
color: inherit !important;
text-decoration: inherit !important;
font-size: inherit !important;
font-family: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
}
.btn-16 a {
display: block;
padding: 15px 35px;
text-decoration: none;
}
.btn-20 a {
display: block;
padding: 15px 35px;
text-decoration: none;
}
.l-white a {
color: #ffffff;
}
.l-black a {
color: #282828;
}
.l-pink a {
color: #3195ff;
}
.l-grey a {
color: #6e6e6e;
}
.l-purple a {
color: #9128df;
}
.gradient {
background: linear-gradient(to right, #0B5FD4 0,#22A3FD 100%);
}
/* Mobile styles */
@@media only screen and (max-device-width: 480px), only screen and (max-width: 480px) {
.mpx-10 {
padding-left: 10px !important;
padding-right: 10px !important;
}
.mpx-15 {
padding-left: 15px !important;
padding-right: 15px !important;
}
u + .body .gwfw {
width: 100% !important;
width: 100vw !important;
}
.td,
.m-shell {
width: 100% !important;
min-width: 100% !important;
}
.mt-left {
text-align: left !important;
}
.mt-center {
text-align: center !important;
}
.mt-right {
text-align: right !important;
}
.me-left {
margin-right: auto !important;
}
.me-center {
margin: 0 auto !important;
}
.me-right {
margin-left: auto !important;
}
.mh-auto {
height: auto !important;
}
.mw-auto {
width: auto !important;
}
.fluid-img img {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
}
.column,
.column-top,
.column-dir-top {
float: left !important;
width: 100% !important;
display: block !important;
}
.m-hide {
display: none !important;
width: 0 !important;
height: 0 !important;
font-size: 0 !important;
line-height: 0 !important;
min-height: 0 !important;
}
.m-block {
display: block !important;
}
.mw-15 {
width: 15px !important;
}
.mw-2p {
width: 2% !important;
}
.mw-32p {
width: 32% !important;
}
.mw-49p {
width: 49% !important;
}
.mw-50p {
width: 50% !important;
}
.mw-100p {
width: 100% !important;
}
.mmt-0 {
margin-top: 0 !important;
}
}
</style>
</head>
<body class="body" style="padding:0 !important; margin:0 auto !important; display:block !important; min-width:100% !important; width:100% !important; background:#f4ecfa; -webkit-text-size-adjust:none;">
<div style="text-align: center;">
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin: 0; padding: 0; width: 100%; height: 100%;" bgcolor="#f4ecfa" class="gwfw">
<tr>
<td style="margin: 0; padding: 0; width: 100%; height: 100%;" align="center" valign="top">
<table width="600" border="0" cellspacing="0" cellpadding="0" class="m-shell">
<tr>
<td class="td" style="width: 600px; min-width: 600px; font-size: 0; line-height: 0; padding: 0; margin: 0; font-weight: normal;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-10">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l-grey" style="padding-top: 20px; padding-bottom: 20px;"></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="gradient" style="border-radius: 10px 10px 0 0; padding-top: 10px;" bgcolor="#3195ff">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="border-radius: 10px 10px 0 0;" bgcolor="#ffffff">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="font-size: 0; line-height: 0; text-align: center; padding-top: 30px; padding-left: 15px; padding-right: 15px; padding-bottom: 10px;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "careaxes.png")" height="25" border="0" alt="" /></a>
</td>
</tr>
<tr>
<td style="font-size: 15px; font-weight: 600; line-height:24px; color:#282828; font-family:Metropolis, sans-serif; text-align: center; padding-bottom: 30px;">
@Model.AccountName
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-15" style="padding-left: 50px; padding-right: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="padding-bottom: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="fluid-img" style="font-size: 0; line-height: 0; text-align: center; padding-bottom: 50px;">
<img src="@(Model.MailTemplatesImagesLink + "reject.png")" width="368" height="296" border="0" alt="" />
</td>
</tr>
<tr>
<td style="font-size:20px; line-height:34px; color:#282828; font-family: Metropolis, sans-serif; min-width:auto !important; text-align:center; padding-bottom: 10px;">
Hi "@Model.FullName"
</td>
</tr>
<tr>
<td style="font-size: 30px; line-height: 40px; color: #282828; font-family: Metropolis, sans-serif; min-width: auto !important; text-align: center; padding-bottom: 15px;">
<strong>Your registration has approved!</strong>
</td>
</tr>
<tr>
<td style="font-size: 15px; color: #6e6e6e; font-family: Metropolis, sans-serif; min-width: auto !important; line-height: 26px; text-align: center; padding-bottom: 25px;">
Thank you for being registered with us. We have validated your uploaded document and approved your registration.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-15" bgcolor="#949196" style="border-radius: 0 0 10px 10px; padding: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" style="padding-bottom: 20px;">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_facebook.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_instagram.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_twitter.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_pinterest.png")" width="34" height="34" border="0" alt="" /></a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="l-white" style="font-size: 14px; font-family: Metropolis, sans-serif; min-width: auto !important; line-height: 24px; text-align: center; color: #ffffff; padding-bottom: 20px;">
<a href="mailto:info@Hims.com" target="_blank" class="link" style="text-decoration: none; color: #ffffff;"><span class="link" style="text-decoration: none; color: #ffffff;">info@Hims.com</span></a> - <a href="https://www.Hims.com" target="_blank" class="link" style="text-decoration: none; color: #ffffff;"><span class="link" style="text-decoration: none; color: #ffffff;">www.Hims.com</span></a>
</td>
</tr>
<tr>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="img" width="117" style="font-size: 0; line-height: 0; text-align: left;">
<a href="@Model.IOSAppLink" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "btn_appstore.png")" width="117" height="40" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="117" style="font-size: 0; line-height: 0; text-align: left;">
<a href="@Model.AndroidAppLink" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "btn_gplay.png")" width="117" height="40" border="0" alt="" /></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l-grey" style="padding-top: 20px; padding-bottom: 20px;"></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>
\ No newline at end of file
<!-- ReSharper disable Html.Obsolete -->
@model Hims.Api.Models.MailTemplates.BookAppointment
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<!--[if gte mso 9]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="format-detection" content="date=no" />
<meta name="format-detection" content="address=no" />
<meta name="format-detection" content="telephone=no" />
<meta name="x-apple-disable-message-reformatting" />
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Metropolis:400,400i,600,600i&display=swap" rel="stylesheet" />
<!--<![endif]-->
<title>Appointment Booking | Careaxes</title>
<!--[if gte mso 9]>
<style type="text/css" media="all">
sup { font-size: 100% !important; }
</style>
<![endif]-->
<!-- body, html, table, thead, tbody, tr, td, div, a, span { font-family: Arial, sans-serif !important; } -->
<style type="text/css" media="screen">
body {
padding: 0 !important;
margin: 0 auto !important;
display: block !important;
min-width: 100% !important;
width: 100% !important;
background: #f4ecfa;
-webkit-text-size-adjust: none
}
a {
color: #3195ff;
text-decoration: none
}
p {
padding: 0 !important;
margin: 0 !important
}
img {
margin: 0 !important;
-ms-interpolation-mode: bicubic; /* Allow smoother rendering of resized image in Internet Explorer */
}
a[x-apple-data-detectors] {
color: inherit !important;
text-decoration: inherit !important;
font-size: inherit !important;
font-family: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
}
.btn-16 a {
display: block;
padding: 15px 35px;
text-decoration: none;
}
.btn-20 a {
display: block;
padding: 15px 35px;
text-decoration: none;
}
.l-white a {
color: #ffffff;
}
.l-black a {
color: #282828;
}
.l-pink a {
color: #3195ff;
}
.l-grey a {
color: #6e6e6e;
}
.l-purple a {
color: #9128df;
}
.gradient {
background: linear-gradient(to right, #0B5FD4 0,#22A3FD 100%);
}
/* Mobile styles */
@@media only screen and (max-device-width: 480px), only screen and (max-width: 480px) {
.mpx-10 {
padding-left: 10px !important;
padding-right: 10px !important;
}
.mpx-15 {
padding-left: 15px !important;
padding-right: 15px !important;
}
u + .body .gwfw {
width: 100% !important;
width: 100vw !important;
}
.td,
.m-shell {
width: 100% !important;
min-width: 100% !important;
}
.mt-left {
text-align: left !important;
}
.mt-center {
text-align: center !important;
}
.mt-right {
text-align: right !important;
}
.me-left {
margin-right: auto !important;
}
.me-center {
margin: 0 auto !important;
}
.me-right {
margin-left: auto !important;
}
.mh-auto {
height: auto !important;
}
.mw-auto {
width: auto !important;
}
.fluid-img img {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
}
.column,
.column-top,
.column-dir-top {
float: left !important;
width: 100% !important;
display: block !important;
}
.m-hide {
display: none !important;
width: 0 !important;
height: 0 !important;
font-size: 0 !important;
line-height: 0 !important;
min-height: 0 !important;
}
.m-block {
display: block !important;
}
.mw-15 {
width: 15px !important;
}
.mw-2p {
width: 2% !important;
}
.mw-32p {
width: 32% !important;
}
.mw-49p {
width: 49% !important;
}
.mw-50p {
width: 50% !important;
}
.mw-100p {
width: 100% !important;
}
.mmt-0 {
margin-top: 0 !important;
}
}
</style>
</head>
<body class="body" style="padding:0 !important; margin:0 auto !important; display:block !important; min-width:100% !important; width:100% !important; background:#f4ecfa; -webkit-text-size-adjust:none;">
<div style="text-align: center;">
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin: 0; padding: 0; width: 100%; height: 100%;" bgcolor="#f4ecfa" class="gwfw">
<tr>
<td style="margin: 0; padding: 0; width: 100%; height: 100%;" align="center" valign="top">
<table width="600" border="0" cellspacing="0" cellpadding="0" class="m-shell">
<tr>
<td class="td" style="width: 600px; min-width: 600px; font-size: 0; line-height: 0; padding: 0; margin: 0; font-weight: normal;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-10">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l-grey" style="padding-top: 20px; padding-bottom: 20px;"></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="gradient" style="border-radius: 10px 10px 0 0; padding-top: 10px;" bgcolor="#3195ff">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="border-radius: 10px 10px 0 0;" bgcolor="#ffffff">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="font-size: 0; line-height: 0; text-align: center; padding-top: 30px; padding-left: 15px; padding-right: 15px; padding-bottom: 10px;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "careaxes.png")" height="25" border="0" alt="" /></a>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-15" style="padding-left: 50px; padding-right: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="padding-bottom: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100" bgcolor="#64c8c0">
<tr>
<td class="fluid-img" style="font-size: 0; line-height: 0; text-align: center; padding-bottom: 50px;">
@*<img src="@(Model.MailTemplatesImagesLink + "reject.png")" width="368" height="296" border="0" alt="" />*@
</td>
</tr>
<tr>
<td style="font-size:30px; line-height:34px; color:#282828; font-family: Metropolis, sans-serif; min-width:auto !important; text-align:center; padding-bottom: 10px;">
Hi @Model.FullName
</td>
</tr>
<tr>
<td style="font-size: 20px; color: #ffff; line-height: 40px; font-family: Metropolis, sans-serif; min-width: auto !important; text-align: center; padding-bottom: 15px;">
<strong>@Model.Message</strong>
</td>
</tr>
<tr>
<td style="font-size: 20px; color: #ffff; line-height: 40px; font-family: Metropolis, sans-serif; min-width: auto !important; text-align: center; padding-bottom: 15px;">
<strong>Appointment date & time</strong>
<p>
<br />
<a style="font-family:my-raleway;cursor: default; color:#fff;font-weight: 600;margin:0 30px;font-size:16px;padding:20px;text-decoration:none;background:#00afef;" href="#">@Model.AppointmentTime</a>
</p>
</td>
</tr>
<tr>
<td style="font-size: 15px; color:#282828; font-family: Metropolis, sans-serif; min-width: auto !important; line-height: 26px; text-align: center; padding-bottom: 25px;">
Thank you for choosing us.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-15" bgcolor="#949196" style="border-radius: 0 0 10px 10px; padding: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" style="padding-bottom: 20px;">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_facebook.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_instagram.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_twitter.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_pinterest.png")" width="34" height="34" border="0" alt="" /></a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="l-white" style="font-size: 14px; font-family: Metropolis, sans-serif; min-width: auto !important; line-height: 24px; text-align: center; color: #ffffff; padding-bottom: 20px;">
<a href="mailto:info@Hims.com" target="_blank" class="link" style="text-decoration: none; color: #ffffff;"><span class="link" style="text-decoration: none; color: #ffffff;">info@Hims.com</span></a> - <a href="https://www.Hims.com" target="_blank" class="link" style="text-decoration: none; color: #ffffff;"><span class="link" style="text-decoration: none; color: #ffffff;">www.Hims.com</span></a>
</td>
</tr>
<tr>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="img" width="117" style="font-size: 0; line-height: 0; text-align: left;">
<a href="@Model.IOSAppLink" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "btn_appstore.png")" width="117" height="40" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="117" style="font-size: 0; line-height: 0; text-align: left;">
<a href="@Model.AndroidAppLink" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "btn_gplay.png")" width="117" height="40" border="0" alt="" /></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l-grey" style="padding-top: 20px; padding-bottom: 20px;"></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>
\ No newline at end of file
<!-- ReSharper disable Html.Obsolete -->
@model Hims.Api.Models.MailTemplates.CreatePassword
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<!--[if gte mso 9]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="format-detection" content="date=no" />
<meta name="format-detection" content="address=no" />
<meta name="format-detection" content="telephone=no" />
<meta name="x-apple-disable-message-reformatting" />
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Metropolis:400,400i,600,600i&display=swap" rel="stylesheet" />
<!--<![endif]-->
<title>Create Password | Careaxes</title>
<!--[if gte mso 9]>
<style type="text/css" media="all">
sup { font-size: 100% !important; }
</style>
<![endif]-->
<!-- body, html, table, thead, tbody, tr, td, div, a, span { font-family: Arial, sans-serif !important; } -->
<style type="text/css" media="screen">
body {
padding: 0 !important;
margin: 0 auto !important;
display: block !important;
min-width: 100% !important;
width: 100% !important;
background: #f4ecfa;
-webkit-text-size-adjust: none
}
a {
color: #3195ff;
text-decoration: none
}
p {
padding: 0 !important;
margin: 0 !important
}
img {
margin: 0 !important;
-ms-interpolation-mode: bicubic; /* Allow smoother rendering of resized image in Internet Explorer */
}
a[x-apple-data-detectors] {
color: inherit !important;
text-decoration: inherit !important;
font-size: inherit !important;
font-family: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
}
.btn-16 a {
display: block;
padding: 15px 35px;
text-decoration: none;
}
.btn-20 a {
display: block;
padding: 15px 35px;
text-decoration: none;
}
.l-white a {
color: #ffffff;
}
.l-black a {
color: #282828;
}
.l-pink a {
color: #3195ff;
}
.l-grey a {
color: #6e6e6e;
}
.l-purple a {
color: #9128df;
}
.gradient {
background: linear-gradient(to right, #0B5FD4 0,#22A3FD 100%);
}
/* Mobile styles */
@@media only screen and (max-device-width: 480px), only screen and (max-width: 480px) {
.mpx-10 {
padding-left: 10px !important;
padding-right: 10px !important;
}
.mpx-15 {
padding-left: 15px !important;
padding-right: 15px !important;
}
u + .body .gwfw {
width: 100% !important;
width: 100vw !important;
}
.td,
.m-shell {
width: 100% !important;
min-width: 100% !important;
}
.mt-left {
text-align: left !important;
}
.mt-center {
text-align: center !important;
}
.mt-right {
text-align: right !important;
}
.me-left {
margin-right: auto !important;
}
.me-center {
margin: 0 auto !important;
}
.me-right {
margin-left: auto !important;
}
.mh-auto {
height: auto !important;
}
.mw-auto {
width: auto !important;
}
.fluid-img img {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
}
.column,
.column-top,
.column-dir-top {
float: left !important;
width: 100% !important;
display: block !important;
}
.m-hide {
display: none !important;
width: 0 !important;
height: 0 !important;
font-size: 0 !important;
line-height: 0 !important;
min-height: 0 !important;
}
.m-block {
display: block !important;
}
.mw-15 {
width: 15px !important;
}
.mw-2p {
width: 2% !important;
}
.mw-32p {
width: 32% !important;
}
.mw-49p {
width: 49% !important;
}
.mw-50p {
width: 50% !important;
}
.mw-100p {
width: 100% !important;
}
.mmt-0 {
margin-top: 0 !important;
}
}
</style>
</head>
<body class="body" style="padding:0 !important; margin:0 auto !important; display:block !important; min-width:100% !important; width:100% !important; background:#f4ecfa; -webkit-text-size-adjust:none;">
<div style="text-align: center;">
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin: 0; padding: 0; width: 100%; height: 100%;" bgcolor="#f4ecfa" class="gwfw">
<tr>
<td style="margin: 0; padding: 0; width: 100%; height: 100%;" align="center" valign="top">
<table width="600" border="0" cellspacing="0" cellpadding="0" class="m-shell">
<tr>
<td class="td" style="width: 600px; min-width: 600px; font-size: 0; line-height: 0; padding: 0; margin: 0; font-weight: normal;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-10">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l-grey" style="padding-top: 20px; padding-bottom: 20px;"></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="gradient" style="border-radius: 10px 10px 0 0; padding-top: 10px;" bgcolor="#3195ff">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="border-radius: 10px 10px 0 0;" bgcolor="#ffffff">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="font-size: 0; line-height: 0; text-align: center; padding-top: 30px; padding-left: 15px; padding-right: 15px; padding-bottom: 10px;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "careaxes.png")" height="25" border="0" alt="" /></a>
</td>
</tr>
<tr>
<td style="font-size: 15px; font-weight: 600; line-height:24px; color:#282828; font-family:Metropolis, sans-serif; text-align: center; padding-bottom: 30px;">
@Model.AccountName
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-15" style="padding-left: 50px; padding-right: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="padding-bottom: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="fluid-img" style="font-size: 0; line-height: 0; text-align: center; padding-bottom: 50px;">
<img src="@(Model.MailTemplatesImagesLink + "password.png")" width="368" height="296" border="0" alt="" />
</td>
</tr>
<tr>
<td style="font-size:20px; line-height:34px; color:#282828; font-family: Metropolis, sans-serif; min-width:auto !important; text-align:center; padding-bottom: 10px;">
Hi "@Model.FullName"
</td>
</tr>
<tr>
<td style="font-size: 30px; line-height: 40px; color: #282828; font-family: Metropolis, sans-serif; min-width: auto !important; text-align: center; padding-bottom: 15px;">
<strong>Create your password?</strong>
</td>
</tr>
<tr>
<td style="font-size: 15px; color: #6e6e6e; font-family: Metropolis, sans-serif; min-width: auto !important; line-height: 26px; text-align: center; padding-bottom: 25px;">
Click on the button below to create your password in Careaxes.
</td>
</tr>
<tr>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0" style="min-width: 200px;">
<tr>
<td class="btn-16 l-white" bgcolor="#3195ff" style="font-size: 15px; line-height: 20px; mso-padding-alt: 15px 35px; font-family: Metropolis, sans-serif; text-align: center; font-weight: 600; text-transform: uppercase; border-radius: 25px; min-width: auto !important; color: #ffffff;">
<a href="@Model.CreatePasswordLink" target="_blank" class="link" style="display: block; padding: 15px 35px; text-decoration: none; color: #ffffff;">
<span class="link" style="text-decoration: none; color: #ffffff;">CREATE PASSWORD</span>
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-15" bgcolor="#949196" style="border-radius: 0 0 10px 10px; padding: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" style="padding-bottom: 20px;">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_facebook.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_instagram.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_twitter.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_pinterest.png")" width="34" height="34" border="0" alt="" /></a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="l-white" style="font-size: 14px; font-family: Metropolis, sans-serif; min-width: auto !important; line-height: 24px; text-align: center; color: #ffffff; padding-bottom: 20px;">
<a href="mailto:info@Hims.com" target="_blank" class="link" style="text-decoration: none; color: #ffffff;"><span class="link" style="text-decoration: none; color: #ffffff;">info@Hims.com</span></a> - <a href="https://www.Hims.com" target="_blank" class="link" style="text-decoration: none; color: #ffffff;"><span class="link" style="text-decoration: none; color: #ffffff;">www.Hims.com</span></a>
</td>
</tr>
<tr>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="img" width="117" style="font-size: 0; line-height: 0; text-align: left;">
<a href="@Model.IOSAppLink" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "btn_appstore.png")" width="117" height="40" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="117" style="font-size: 0; line-height: 0; text-align: left;">
<a href="@Model.AndroidAppLink" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "btn_gplay.png")" width="117" height="40" border="0" alt="" /></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l-grey" style="padding-top: 20px; padding-bottom: 20px;"></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>
\ No newline at end of file
<!-- ReSharper disable Html.Obsolete -->
@model Hims.Api.Models.MailTemplates.EmailOTP
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<!--[if gte mso 9]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="format-detection" content="date=no" />
<meta name="format-detection" content="address=no" />
<meta name="format-detection" content="telephone=no" />
<meta name="x-apple-disable-message-reformatting" />
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Metropolis:400,400i,600,600i&display=swap" rel="stylesheet" />
<!--<![endif]-->
<title>Email OTP | Careaxes</title>
<!--[if gte mso 9]>
<style type="text/css" media="all">
sup { font-size: 100% !important; }
</style>
<![endif]-->
<!-- body, html, table, thead, tbody, tr, td, div, a, span { font-family: Arial, sans-serif !important; } -->
<style type="text/css" media="screen">
body {
padding: 0 !important;
margin: 0 auto !important;
display: block !important;
min-width: 100% !important;
width: 100% !important;
background: #f4ecfa;
-webkit-text-size-adjust: none
}
a {
color: #3195ff;
text-decoration: none
}
p {
padding: 0 !important;
margin: 0 !important
}
img {
margin: 0 !important;
-ms-interpolation-mode: bicubic; /* Allow smoother rendering of resized image in Internet Explorer */
}
a[x-apple-data-detectors] {
color: inherit !important;
text-decoration: inherit !important;
font-size: inherit !important;
font-family: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
}
.btn-16 a {
display: block;
padding: 15px 35px;
text-decoration: none;
}
.btn-20 a {
display: block;
padding: 15px 35px;
text-decoration: none;
}
.l-white a {
color: #ffffff;
}
.l-black a {
color: #282828;
}
.l-pink a {
color: #3195ff;
}
.l-grey a {
color: #6e6e6e;
}
.l-purple a {
color: #9128df;
}
.gradient {
background: linear-gradient(to right, #0B5FD4 0,#22A3FD 100%);
}
/* Mobile styles */
@@media only screen and (max-device-width: 480px), only screen and (max-width: 480px) {
.mpx-10 {
padding-left: 10px !important;
padding-right: 10px !important;
}
.mpx-15 {
padding-left: 15px !important;
padding-right: 15px !important;
}
u + .body .gwfw {
width: 100% !important;
width: 100vw !important;
}
.td,
.m-shell {
width: 100% !important;
min-width: 100% !important;
}
.mt-left {
text-align: left !important;
}
.mt-center {
text-align: center !important;
}
.mt-right {
text-align: right !important;
}
.me-left {
margin-right: auto !important;
}
.me-center {
margin: 0 auto !important;
}
.me-right {
margin-left: auto !important;
}
.mh-auto {
height: auto !important;
}
.mw-auto {
width: auto !important;
}
.fluid-img img {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
}
.column,
.column-top,
.column-dir-top {
float: left !important;
width: 100% !important;
display: block !important;
}
.m-hide {
display: none !important;
width: 0 !important;
height: 0 !important;
font-size: 0 !important;
line-height: 0 !important;
min-height: 0 !important;
}
.m-block {
display: block !important;
}
.mw-15 {
width: 15px !important;
}
.mw-2p {
width: 2% !important;
}
.mw-32p {
width: 32% !important;
}
.mw-49p {
width: 49% !important;
}
.mw-50p {
width: 50% !important;
}
.mw-100p {
width: 100% !important;
}
.mmt-0 {
margin-top: 0 !important;
}
}
</style>
</head>
<body class="body" style="padding:0 !important; margin:0 auto !important; display:block !important; min-width:100% !important; width:100% !important; background:#f4ecfa; -webkit-text-size-adjust:none;">
<div style="text-align: center;">
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin: 0; padding: 0; width: 100%; height: 100%;" bgcolor="#f4ecfa" class="gwfw">
<tr>
<td style="margin: 0; padding: 0; width: 100%; height: 100%;" align="center" valign="top">
<table width="600" border="0" cellspacing="0" cellpadding="0" class="m-shell">
<tr>
<td class="td" style="width: 600px; min-width: 600px; font-size: 0; line-height: 0; padding: 0; margin: 0; font-weight: normal;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-10">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l-grey" style="padding-top: 20px; padding-bottom: 20px;"></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="gradient" style="border-radius: 10px 10px 0 0; padding-top: 10px;" bgcolor="#3195ff">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="border-radius: 10px 10px 0 0;" bgcolor="#ffffff">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="font-size: 0; line-height: 0; text-align: center; padding-top: 30px; padding-left: 15px; padding-right: 15px; padding-bottom: 10px;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "careaxes.png")" height="25" border="0" alt="" /></a>
</td>
</tr>
<tr>
<td style="font-size: 15px; font-weight: 600; line-height:24px; color:#282828; font-family:Metropolis, sans-serif; text-align: center; padding-bottom: 30px;">
@Model.AccountName
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-15" style="padding-left: 50px; padding-right: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="padding-bottom: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="fluid-img" style="font-size: 0; line-height: 0; text-align: center; padding-bottom: 50px;">
<img src="@(Model.MailTemplatesImagesLink + "password.png")" width="368" height="296" border="0" alt="" />
</td>
</tr>
<tr>
<td style="font-size:20px; line-height:34px; color:#282828; font-family: Metropolis, sans-serif; min-width:auto !important; text-align:center; padding-bottom: 10px;">
Hi "@Model.FullName"
</td>
</tr>
<tr>
<td style="font-size: 30px; line-height: 40px; color: #282828; font-family: Metropolis, sans-serif; min-width: auto !important; text-align: center; padding-bottom: 15px;">
<strong>Verification Code</strong>
</td>
</tr>
<tr>
<td style="font-size: 15px; color: #6e6e6e; font-family: Metropolis, sans-serif; min-width: auto !important; line-height: 26px; text-align: center; padding-bottom: 25px;">
User below to verification code for (@Model.Email). This verification code will be expired in 3 minutes.
</td>
</tr>
<tr>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0" style="min-width: 200px;">
<tr>
<td class="mpx-15" style="border-radius: 10px; border: 1px dashed #b4b4d4; font-size:22px; line-height:26px; color:#282828; font-family:'PT Sans', Arial, sans-serif; min-width:auto !important; text-align:center; padding-top: 20px; padding-bottom: 20px; padding-left: 50px; padding-right: 50px;" bgcolor="#f4ecfa">
<strong>USE CODE : <span style="color:#3195ff;">@Model.OTP</span></strong>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
@*<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-15" bgcolor="#949196" style="border-radius: 0 0 10px 10px; padding: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" style="padding-bottom: 20px;">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_facebook.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_instagram.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_twitter.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_pinterest.png")" width="34" height="34" border="0" alt="" /></a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="l-white" style="font-size: 14px; font-family: Metropolis, sans-serif; min-width: auto !important; line-height: 24px; text-align: center; color: #ffffff; padding-bottom: 20px;">
<a href="mailto:info@Hims.com" target="_blank" class="link" style="text-decoration: none; color: #ffffff;"><span class="link" style="text-decoration: none; color: #ffffff;">info@Hims.com</span></a> - <a href="https://www.Hims.com" target="_blank" class="link" style="text-decoration: none; color: #ffffff;"><span class="link" style="text-decoration: none; color: #ffffff;">www.Hims.com</span></a>
</td>
</tr>
<tr>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="img" width="117" style="font-size: 0; line-height: 0; text-align: left;">
<a href="@Model.IOSAppLink" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "btn_appstore.png")" width="117" height="40" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="117" style="font-size: 0; line-height: 0; text-align: left;">
<a href="@Model.AndroidAppLink" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "btn_gplay.png")" width="117" height="40" border="0" alt="" /></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l-grey" style="padding-top: 20px; padding-bottom: 20px;"></td>
</tr>
</table>*@
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>
\ No newline at end of file
<!-- ReSharper disable Html.Obsolete -->
@model Hims.Api.Models.MailTemplates.ResetPassword
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<!--[if gte mso 9]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="format-detection" content="date=no" />
<meta name="format-detection" content="address=no" />
<meta name="format-detection" content="telephone=no" />
<meta name="x-apple-disable-message-reformatting" />
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Metropolis:400,400i,600,600i&display=swap" rel="stylesheet" />
<!--<![endif]-->
<title>Forgot Password | Careaxes</title>
<!--[if gte mso 9]>
<style type="text/css" media="all">
sup { font-size: 100% !important; }
</style>
<![endif]-->
<!-- body, html, table, thead, tbody, tr, td, div, a, span { font-family: Arial, sans-serif !important; } -->
<style type="text/css" media="screen">
body {
padding: 0 !important;
margin: 0 auto !important;
display: block !important;
min-width: 100% !important;
width: 100% !important;
background: #f4ecfa;
-webkit-text-size-adjust: none
}
a {
color: #3195ff;
text-decoration: none
}
p {
padding: 0 !important;
margin: 0 !important
}
img {
margin: 0 !important;
-ms-interpolation-mode: bicubic; /* Allow smoother rendering of resized image in Internet Explorer */
}
a[x-apple-data-detectors] {
color: inherit !important;
text-decoration: inherit !important;
font-size: inherit !important;
font-family: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
}
.btn-16 a {
display: block;
padding: 15px 35px;
text-decoration: none;
}
.btn-20 a {
display: block;
padding: 15px 35px;
text-decoration: none;
}
.l-white a {
color: #ffffff;
}
.l-black a {
color: #282828;
}
.l-pink a {
color: #3195ff;
}
.l-grey a {
color: #6e6e6e;
}
.l-purple a {
color: #9128df;
}
.gradient {
background: linear-gradient(to right, #0B5FD4 0,#22A3FD 100%);
}
/* Mobile styles */
@@media only screen and (max-device-width: 480px), only screen and (max-width: 480px) {
.mpx-10 {
padding-left: 10px !important;
padding-right: 10px !important;
}
.mpx-15 {
padding-left: 15px !important;
padding-right: 15px !important;
}
u + .body .gwfw {
width: 100% !important;
width: 100vw !important;
}
.td,
.m-shell {
width: 100% !important;
min-width: 100% !important;
}
.mt-left {
text-align: left !important;
}
.mt-center {
text-align: center !important;
}
.mt-right {
text-align: right !important;
}
.me-left {
margin-right: auto !important;
}
.me-center {
margin: 0 auto !important;
}
.me-right {
margin-left: auto !important;
}
.mh-auto {
height: auto !important;
}
.mw-auto {
width: auto !important;
}
.fluid-img img {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
}
.column,
.column-top,
.column-dir-top {
float: left !important;
width: 100% !important;
display: block !important;
}
.m-hide {
display: none !important;
width: 0 !important;
height: 0 !important;
font-size: 0 !important;
line-height: 0 !important;
min-height: 0 !important;
}
.m-block {
display: block !important;
}
.mw-15 {
width: 15px !important;
}
.mw-2p {
width: 2% !important;
}
.mw-32p {
width: 32% !important;
}
.mw-49p {
width: 49% !important;
}
.mw-50p {
width: 50% !important;
}
.mw-100p {
width: 100% !important;
}
.mmt-0 {
margin-top: 0 !important;
}
}
</style>
</head>
<body class="body" style="padding:0 !important; margin:0 auto !important; display:block !important; min-width:100% !important; width:100% !important; background:#f4ecfa; -webkit-text-size-adjust:none;">
<div style="text-align: center;">
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin: 0; padding: 0; width: 100%; height: 100%;" bgcolor="#f4ecfa" class="gwfw">
<tr>
<td style="margin: 0; padding: 0; width: 100%; height: 100%;" align="center" valign="top">
<table width="600" border="0" cellspacing="0" cellpadding="0" class="m-shell">
<tr>
<td class="td" style="width: 600px; min-width: 600px; font-size: 0; line-height: 0; padding: 0; margin: 0; font-weight: normal;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-10">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l-grey" style="padding-top: 20px; padding-bottom: 20px;"></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="gradient" style="border-radius: 10px 10px 0 0; padding-top: 10px;" bgcolor="#3195ff">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="border-radius: 10px 10px 0 0;" bgcolor="#ffffff">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="font-size: 0; line-height: 0; text-align: center; padding-top: 30px; padding-left: 15px; padding-right: 15px; padding-bottom: 10px;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "careaxes.png")" height="25" border="0" alt="" /></a>
</td>
</tr>
<tr>
<td style="font-size: 15px; font-weight: 600; line-height:24px; color:#282828; font-family:Metropolis, sans-serif; text-align: center; padding-bottom: 30px;">
@Model.AccountName
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-15" style="padding-left: 50px; padding-right: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="padding-bottom: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="fluid-img" style="font-size: 0; line-height: 0; text-align: center; padding-bottom: 50px;">
<img src="@(Model.MailTemplatesImagesLink + "password.png")" width="368" height="296" border="0" alt="" />
</td>
</tr>
<tr>
<td style="font-size:20px; line-height:34px; color:#282828; font-family: Metropolis, Arial, sans-serif; min-width:auto !important; text-align:center; padding-bottom: 10px;">
Hi "@Model.FullName"
</td>
</tr>
<tr>
<td style="font-size: 30px; line-height: 40px; color: #282828; font-family: Metropolis, sans-serif; min-width: auto !important; text-align: center; padding-bottom: 15px;">
<strong>Forgot your password?</strong>
</td>
</tr>
<tr>
<td style="font-size: 15px; color: #6e6e6e; font-family: Metropolis, sans-serif; min-width: auto !important; line-height: 26px; text-align: center; padding-bottom: 25px;">
Click on the button below to reset your password in Careaxes, you have 1 hour to pick your password. After that, you'll have to ask for a new one.
</td>
</tr>
<tr>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0" style="min-width: 200px;">
<tr>
<td class="btn-16 l-white" bgcolor="#3195ff" style="font-size: 15px; line-height: 20px; mso-padding-alt: 15px 35px; font-family: Metropolis, sans-serif; text-align: center; font-weight: 600; text-transform: uppercase; border-radius: 25px; min-width: auto !important; color: #ffffff;">
<a href="@Model.ResetPasswordLink" target="_blank" class="link" style="display: block; padding: 15px 35px; text-decoration: none; color: #ffffff;">
<span class="link" style="text-decoration: none; color: #ffffff;">RESET PASSWORD</span>
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-15" bgcolor="#949196" style="border-radius: 0 0 10px 10px; padding: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" style="padding-bottom: 20px;">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_facebook.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_instagram.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_twitter.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_pinterest.png")" width="34" height="34" border="0" alt="" /></a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="l-white" style="font-size: 14px; font-family: Metropolis, sans-serif; min-width: auto !important; line-height: 24px; text-align: center; color: #ffffff; padding-bottom: 20px;">
<a href="mailto:info@Hims.com" target="_blank" class="link" style="text-decoration: none; color: #ffffff;"><span class="link" style="text-decoration: none; color: #ffffff;">info@Hims.com</span></a> - <a href="https://www.Hims.com" target="_blank" class="link" style="text-decoration: none; color: #ffffff;"><span class="link" style="text-decoration: none; color: #ffffff;">www.Hims.com</span></a>
</td>
</tr>
<tr>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="img" width="117" style="font-size: 0; line-height: 0; text-align: left;">
<a href="@Model.IOSAppLink" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "btn_appstore.png")" width="117" height="40" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="117" style="font-size: 0; line-height: 0; text-align: left;">
<a href="@Model.AndroidAppLink" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "btn_gplay.png")" width="117" height="40" border="0" alt="" /></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l-grey" style="padding-top: 20px; padding-bottom: 20px;"></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>
\ No newline at end of file
<!-- ReSharper disable Html.Obsolete -->
@model Hims.Api.Models.MailTemplates.BookAppointment
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="format-detection" content="date=no"/>
<meta name="format-detection" content="address=no"/>
<meta name="format-detection" content="telephone=no"/>
<meta name="x-apple-disable-message-reformatting"/>
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Metropolis:400,400i,600,600i&display=swap" rel="stylesheet"/>
<!--<![endif]-->
<title>Careaxes</title>
<style type="text/css" media="screen">
body {
padding: 0 !important;
margin: 0 auto !important;
display: block !important;
min-width: 100% !important;
width: 100% !important;
background: #f4ecfa;
-webkit-text-size-adjust: none
}
a {
color: #3195ff;
text-decoration: none
}
p {
padding: 0 !important;
margin: 0 !important
}
img {
margin: 0 !important;
-ms-interpolation-mode: bicubic; /* Allow smoother rendering of resized image in Internet Explorer */
}
a[x-apple-data-detectors] {
color: inherit !important;
text-decoration: inherit !important;
font-size: inherit !important;
font-family: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
}
.btn-16 a {
display: block;
padding: 15px 35px;
text-decoration: none;
}
.btn-20 a {
display: block;
padding: 15px 35px;
text-decoration: none;
}
.l-white a {
color: #ffffff;
}
.l-black a {
color: #282828;
}
.l-pink a {
color: #3195ff;
}
.l-grey a {
color: #6e6e6e;
}
.l-purple a {
color: #9128df;
}
.gradient {
background: linear-gradient(to right, #0B5FD4 0, #22A3FD 100%);
}
/* Mobile styles */
@@media only screen and (max-device-width: 480px), only screen and (max-width: 480px) {
.mpx-10 {
padding-left: 10px !important;
padding-right: 10px !important;
}
.mpx-15 {
padding-left: 15px !important;
padding-right: 15px !important;
}
u + .body .gwfw {
width: 100% !important;
width: 100vw !important;
}
.td,
.m-shell {
width: 100% !important;
min-width: 100% !important;
}
.mt-left {
text-align: left !important;
}
.mt-center {
text-align: center !important;
}
.mt-right {
text-align: right !important;
}
.me-left {
margin-right: auto !important;
}
.me-center {
margin: 0 auto !important;
}
.me-right {
margin-left: auto !important;
}
.mh-auto {
height: auto !important;
}
.mw-auto {
width: auto !important;
}
.fluid-img img {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
}
.column,
.column-top,
.column-dir-top {
float: left !important;
width: 100% !important;
display: block !important;
}
.m-hide {
display: none !important;
width: 0 !important;
height: 0 !important;
font-size: 0 !important;
line-height: 0 !important;
min-height: 0 !important;
}
.m-block {
display: block !important;
}
.mw-15 {
width: 15px !important;
}
.mw-2p {
width: 2% !important;
}
.mw-32p {
width: 32% !important;
}
.mw-49p {
width: 49% !important;
}
.mw-50p {
width: 50% !important;
}
.mw-100p {
width: 100% !important;
}
.mmt-0 {
margin-top: 0 !important;
}
}
</style>
</head>
<body class="body" style="padding:0 !important; margin:0 auto !important; display:block !important; min-width:100% !important; width:100% !important; background:#f4ecfa; -webkit-text-size-adjust:none;">
<div style="text-align: center;">
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin: 0; padding: 0; width: 100%; height: 100%;" bgcolor="#f4ecfa" class="gwfw">
<tr>
<td style="margin: 0; padding: 0; width: 100%; height: 100%;" align="center" valign="top">
<table width="600" border="0" cellspacing="0" cellpadding="0" class="m-shell">
<tr>
<td class="gradient" style="border-radius: 10px 10px 0 0; padding-top: 10px;" bgcolor="#3195ff">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="border-radius: 10px 10px 0 0;" bgcolor="#ffffff">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="font-size: 0; line-height: 0; text-align: center; padding-top: 30px; padding-left: 15px; padding-right: 15px; padding-bottom: 10px;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "careaxes.png")" height="25" border="0" alt="" /></a>
</td>
</tr>
</table>
@*<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-15" style="padding-left: 50px; padding-right: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-10">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l-grey" style="padding-top: 20px; padding-bottom: 20px;"></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-15" bgcolor="#949196" style="font-size: 20px; border-radius: 0 0 10px 10px; padding: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" class="l-white" style="padding-bottom: 20px;">
For download app click the bellow link
</td>
</tr>
<tr>
<td class="l-white" style="font-size: 14px; font-family: Metropolis, sans-serif; min-width: auto !important; line-height: 24px; text-align: center; color: #ffffff; padding-bottom: 20px;">
<a href="mailto:info@Hims.com" target="_blank" class="link" style="text-decoration: none; color: #ffffff;"><span class="link" style="text-decoration: none; color: #ffffff;">info@Hims.com</span></a> - <a href="https://www.Hims.com" target="_blank" class="link" style="text-decoration: none; color: #ffffff;"><span class="link" style="text-decoration: none; color: #ffffff;">www.Hims.com</span></a>
</td>
</tr>
<tr>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="img" width="117" style="font-size: 0; line-height: 0; text-align: left;">
<a href="@Model.IOSAppLink" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "btn_appstore.png")" width="117" height="40" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="117" style="font-size: 0; line-height: 0; text-align: left;">
<a href="@Model.AndroidAppLink" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "btn_gplay.png")" width="117" height="40" border="0" alt="" /></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l-grey" style="padding-top: 20px; padding-bottom: 20px;"></td>
</tr>
</table>
</td>
</tr>
</table>*@
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
@*</td>
</tr>
</table>*@
</div>
</body>
</html>
\ No newline at end of file
<!-- ReSharper disable Html.Obsolete -->
@model Hims.Shared.UserModels.PharmacyBillReportModel;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<!--[if gte mso 9]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="format-detection" content="date=no" />
<meta name="format-detection" content="address=no" />
<meta name="format-detection" content="telephone=no" />
<meta name="x-apple-disable-message-reformatting" />
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Metropolis:400,400i,600,600i&display=swap" rel="stylesheet" />
<!--<![endif]-->
<title>Tender </title>
<!--[if gte mso 9]>
<style type="text/css" media="all">
sup { font-size: 100% !important; }
</style>
<![endif]-->
<!-- body, html, table, thead, tbody, tr, td, div, a, span { font-family: Arial, sans-serif !important; } -->
<style>
*,
::after,
::before {
box-sizing: border-box;
}
.mainContain {
width: 100%;
background: #f4ecfa;
}
.insideContainer {
background-color: white;
border-radius: 10px;
}
.gradient {
background: linear-gradient(to right, #0b5fd4 0, #22a3fd 100%);
border-radius: 14px 14px 16px 16px;
padding: 10px 5px 9px 5px;
margin: auto;
max-width: 600px;
min-width: 600px;
}
.tableContainer {
padding-bottom: 35px;
margin-bottom: 10px;
}
.tableContainer > table {
border-collapse: collapse;
color: #212529;
background-color: rgb(255, 255, 255);
width: 100%;
border-color: rgb(192, 191, 191);
}
</style>
</head>
<body>
<div class="mainContain">
<div class="gradient">
<div class="insideContainer">
<div>
<img style="display:block; margin:auto; padding: 5%;width:50%;"
src="https://www.careaxes.net/maa-sharada-api/assets/images/logo_dark.png" alt="" />
</div>
<table class="headEmail" style="width: 100%; background-color: aliceblue; font-size:11px;">
<h5 style="text-align:center;font:bold;">Pharmacy Final Bill</h5>
<h5 style="text-align:center">@(Model.pharmacyBillType == null ? "" : true ? "Sale Bill" : "Return Bill")</h5>
<tr>
<td>
<div style="text-align: center; width:100px;">
<div style="font-weight:bold;">From Date :</div>
<div> @Convert.ToDateTime(Model.FromDate).ToString("dd-MM-yyyy, hh:mm tt")</div>
</div>
</td>
<td>
<div style="text-align: center; width:100px;">
<div style="font-weight:bold;">To Date :</div>
<div> @Convert.ToDateTime(Model.ToDate).ToString("dd-MM-yyyy,hh:mm tt")</div>
</div>
</td>
@*<td>
<div style="text-align: center; width:100px; float:right;">
<div style="font-weight:bold;"> Payment Type</div>
<div> @Model.BillType</div>
</div>
</td>
<td>
<div style="text-align: center; width:100px; float:right;">
<div style="font-weight:bold;"> Bill Number</div>
<div> @Model.BillNumber</div>
</div>
</td>*@
</tr>
</table>
<div class="tableContainer">
<table rules="all" cellpadding="5px" style="border-bottom: 1px solid gray; font-size:11px;">
<tr style="color: #000; border:1px solid rgb(189, 184, 184);">
<th style="text-align: left;">Cash Total</th>
<th style="text-align: left;">Card Total</th>
<th style="text-align: left;">GST Total</th>
<th style="text-align: left;">Grand Total</th>
</tr>
<tr style="color: #000;border:1px solid rgb(189, 184, 184); font-size:10px; text-align:justify;">
<td><text>@Math.Round(Convert.ToDecimal(Model.CashTotal), 2)</text></td>
<td><text>@Math.Round(Convert.ToDecimal(Model.CardTotal), 2)</text></td>
<td><text>@Math.Round(Convert.ToDecimal(Model.GstTotal), 2)</text></td>
<td><text>@Math.Round(Convert.ToDecimal(Model.GrossTotal), 2)</text></td>
</tr>
</table>
@*<div style="background-color:#3195ff; width: 220px; border-radius: 30px; margin: auto; text-align: center; margin-top: 35px;">
<a href="@Model.Link"
style="display:block;padding:15px 35px;text-decoration:none;color:#ffffff" target="_blank"
data-saferedirecturl="https://www.google.com/url?q=https://www.airopd.com/maa-sharada-reactive-api/password/create/MjE2NA%253D%253D&amp;source=gmail&amp;ust=1641385144351000&amp;usg=AOvVaw3RARc1xYFaJPCYfu0Pkl5N">
<span style="text-decoration:none;color:#ffffff; font-weight: 500;">ACCEPT TENDER</span>
</a>
</div>*@
</div>
<div style="padding:10px; color:rgb(107, 107, 107); text-align: right;">
© Careaxes by <a style="color:rgb(107, 107, 107);" href="https://sujainfo.com/"
target="_blank">Suja Info</a>
</div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
<!-- ReSharper disable Html.Obsolete -->
@model Hims.Shared.EntityModels.ProductEmailModel;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<!--[if gte mso 9]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="format-detection" content="date=no" />
<meta name="format-detection" content="address=no" />
<meta name="format-detection" content="telephone=no" />
<meta name="x-apple-disable-message-reformatting" />
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Metropolis:400,400i,600,600i&display=swap" rel="stylesheet" />
<!--<![endif]-->
<title>Tender </title>
<!--[if gte mso 9]>
<style type="text/css" media="all">
sup { font-size: 100% !important; }
</style>
<![endif]-->
<!-- body, html, table, thead, tbody, tr, td, div, a, span { font-family: Arial, sans-serif !important; } -->
<style>
*,
::after,
::before {
box-sizing: border-box;
}
.mainContain {
width: 100%;
background: #f4ecfa;
}
.insideContainer {
background-color: white;
border-radius: 10px;
}
.gradient {
background: linear-gradient(to right, #0b5fd4 0, #22a3fd 100%);
border-radius: 14px 14px 16px 16px;
padding: 10px 5px 9px 5px;
margin: auto;
max-width: 600px;
min-width: 600px;
}
.tableContainer {
padding-bottom: 35px;
margin-bottom: 10px;
}
.tableContainer > table {
border-collapse: collapse;
color: #212529;
background-color: rgb(255, 255, 255);
width: 100%;
border-color: rgb(192, 191, 191);
}
</style>
</head>
<body>
<div class="mainContain">
<div class="gradient">
<div class="insideContainer">
<div>
<img style="display:block; margin:auto; padding: 5%;width:50%;"
src="https://www.careaxes.net/maa-sharada-api/assets/images/logo_dark.png" alt="" />
</div>
<table class="headEmail" style="width: 100%; background-color: aliceblue; font-size:11px;">
<h5 style="text-align:center;font:bold;">Pharmacy Purchase Bill</h5>
<tr>
<td>
<div style="text-align: center; width:100px;">
<div style="font-weight:bold;"> Created By Name</div>
<div> @Model.CreatedByName</div>
</div>
</td>
<td>
<div style="text-align: center; width:100px;">
<div style="font-weight:bold;"> Bill Date</div>
<div> @Model.BillDate.ToString("dd-MM-yyyy")</div>
</div>
</td>
<td>
<div style="text-align: center; width:100px; float:right;">
<div style="font-weight:bold;"> Payment Type</div>
<div> @Model.BillType</div>
</div>
</td>
<td>
<div style="text-align: center; width:100px; float:right;">
<div style="font-weight:bold;"> Bill Number</div>
<div> @Model.BillNumber</div>
</div>
</td>
</tr>
</table>
<div class="tableContainer">
<table rules="all" cellpadding="5px" style="border-bottom: 1px solid gray; font-size:11px;">
<tr style="color: #000; border:1px solid rgb(189, 184, 184);">
<th style="text-align: left;">Product Name</th>
<th style="text-align: left;">Category Name</th>
<th style="text-align: left;">Supplier Name</th>
<th style="text-align: left;">Quantity</th>
<th style="text-align: left;">Free</th>
<th style="text-align: left;">Purchase Rate</th>
<th style="text-align: left;">Discount</th>
<th style="text-align: left;">Tax</th>
<th style="text-align: left;">Total Amount</th>
<th style="text-align: left;">Net Amount</th>
</tr>
@foreach (var item in Model.EmailProducts)
{
<tr style="color: #000;border:1px solid rgb(189, 184, 184); font-size:10px; text-align:justify;" >
<td><text>@item.ProductName</text></td>
<td><text>@item.CategoryName</text></td>
<td><text>@item.SupplierName</text></td>
<td><text>@item.Quantity</text></td>
<td><text>@item.Free</text></td>
<td><text>@item.PurchaseRate</text></td>
<td><text>@item.DiscountPerItem</text></td>
<td><text>@item.TaxAmount</text></td>
<td><text>@item.Total</text></td>
<td><text>@item.NetAmount</text></td>
</tr>
}
</table>
@*<div style="background-color:#3195ff; width: 220px; border-radius: 30px; margin: auto; text-align: center; margin-top: 35px;">
<a href="@Model.Link"
style="display:block;padding:15px 35px;text-decoration:none;color:#ffffff" target="_blank"
data-saferedirecturl="https://www.google.com/url?q=https://www.airopd.com/maa-sharada-reactive-api/password/create/MjE2NA%253D%253D&amp;source=gmail&amp;ust=1641385144351000&amp;usg=AOvVaw3RARc1xYFaJPCYfu0Pkl5N">
<span style="text-decoration:none;color:#ffffff; font-weight: 500;">ACCEPT TENDER</span>
</a>
</div>*@
</div>
<div style="padding:10px; color:rgb(107, 107, 107); text-align: right;">
© Careaxes by <a style="color:rgb(107, 107, 107);" href="https://sujainfo.com/"
target="_blank">Suja Info</a>
</div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
<!-- ReSharper disable Html.Obsolete -->
@model Hims.Api.Models.MailTemplates.RejectProvider
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<!--[if gte mso 9]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="format-detection" content="date=no" />
<meta name="format-detection" content="address=no" />
<meta name="format-detection" content="telephone=no" />
<meta name="x-apple-disable-message-reformatting" />
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Metropolis:400,400i,600,600i&display=swap" rel="stylesheet" />
<!--<![endif]-->
<title>Provider Registration Rejected | Careaxes</title>
<!--[if gte mso 9]>
<style type="text/css" media="all">
sup { font-size: 100% !important; }
</style>
<![endif]-->
<!-- body, html, table, thead, tbody, tr, td, div, a, span { font-family: Arial, sans-serif !important; } -->
<style type="text/css" media="screen">
body {
padding: 0 !important;
margin: 0 auto !important;
display: block !important;
min-width: 100% !important;
width: 100% !important;
background: #f4ecfa;
-webkit-text-size-adjust: none
}
a {
color: #3195ff;
text-decoration: none
}
p {
padding: 0 !important;
margin: 0 !important
}
img {
margin: 0 !important;
-ms-interpolation-mode: bicubic; /* Allow smoother rendering of resized image in Internet Explorer */
}
a[x-apple-data-detectors] {
color: inherit !important;
text-decoration: inherit !important;
font-size: inherit !important;
font-family: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
}
.btn-16 a {
display: block;
padding: 15px 35px;
text-decoration: none;
}
.btn-20 a {
display: block;
padding: 15px 35px;
text-decoration: none;
}
.l-white a {
color: #ffffff;
}
.l-black a {
color: #282828;
}
.l-pink a {
color: #3195ff;
}
.l-grey a {
color: #6e6e6e;
}
.l-purple a {
color: #9128df;
}
.gradient {
background: linear-gradient(to right, #0B5FD4 0,#22A3FD 100%);
}
/* Mobile styles */
@@media only screen and (max-device-width: 480px), only screen and (max-width: 480px) {
.mpx-10 {
padding-left: 10px !important;
padding-right: 10px !important;
}
.mpx-15 {
padding-left: 15px !important;
padding-right: 15px !important;
}
u + .body .gwfw {
width: 100% !important;
width: 100vw !important;
}
.td,
.m-shell {
width: 100% !important;
min-width: 100% !important;
}
.mt-left {
text-align: left !important;
}
.mt-center {
text-align: center !important;
}
.mt-right {
text-align: right !important;
}
.me-left {
margin-right: auto !important;
}
.me-center {
margin: 0 auto !important;
}
.me-right {
margin-left: auto !important;
}
.mh-auto {
height: auto !important;
}
.mw-auto {
width: auto !important;
}
.fluid-img img {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
}
.column,
.column-top,
.column-dir-top {
float: left !important;
width: 100% !important;
display: block !important;
}
.m-hide {
display: none !important;
width: 0 !important;
height: 0 !important;
font-size: 0 !important;
line-height: 0 !important;
min-height: 0 !important;
}
.m-block {
display: block !important;
}
.mw-15 {
width: 15px !important;
}
.mw-2p {
width: 2% !important;
}
.mw-32p {
width: 32% !important;
}
.mw-49p {
width: 49% !important;
}
.mw-50p {
width: 50% !important;
}
.mw-100p {
width: 100% !important;
}
.mmt-0 {
margin-top: 0 !important;
}
}
</style>
</head>
<body class="body" style="padding:0 !important; margin:0 auto !important; display:block !important; min-width:100% !important; width:100% !important; background:#f4ecfa; -webkit-text-size-adjust:none;">
<div style="text-align: center;">
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin: 0; padding: 0; width: 100%; height: 100%;" bgcolor="#f4ecfa" class="gwfw">
<tr>
<td style="margin: 0; padding: 0; width: 100%; height: 100%;" align="center" valign="top">
<table width="600" border="0" cellspacing="0" cellpadding="0" class="m-shell">
<tr>
<td class="td" style="width: 600px; min-width: 600px; font-size: 0; line-height: 0; padding: 0; margin: 0; font-weight: normal;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-10">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l-grey" style="padding-top: 20px; padding-bottom: 20px;"></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="gradient" style="border-radius: 10px 10px 0 0; padding-top: 10px;" bgcolor="#3195ff">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="border-radius: 10px 10px 0 0;" bgcolor="#ffffff">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="font-size: 0; line-height: 0; text-align: center; padding-top: 30px; padding-left: 15px; padding-right: 15px; padding-bottom: 10px;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "careaxes.png")" height="25" border="0" alt="" /></a>
</td>
</tr>
<tr>
<td style="font-size: 15px; font-weight: 600; line-height:24px; color:#282828; font-family:Metropolis, sans-serif; text-align: center; padding-bottom: 30px;">
@Model.AccountName
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-15" style="padding-left: 50px; padding-right: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="padding-bottom: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="fluid-img" style="font-size: 0; line-height: 0; text-align: center; padding-bottom: 50px;">
<img src="@(Model.MailTemplatesImagesLink + "reject.png")" width="368" height="296" border="0" alt="" />
</td>
</tr>
<tr>
<td style="font-size:20px; line-height:34px; color:#282828; font-family: Metropolis, sans-serif; min-width:auto !important; text-align:center; padding-bottom: 10px;">
Hi "@Model.FullName"
</td>
</tr>
<tr>
<td style="font-size: 30px; line-height: 40px; color: #282828; font-family: Metropolis, sans-serif; min-width: auto !important; text-align: center; padding-bottom: 15px;">
<strong>Your registration has rejected!</strong>
</td>
</tr>
<tr>
<td style="font-size: 15px; color: #6e6e6e; font-family: Metropolis, sans-serif; min-width: auto !important; line-height: 26px; text-align: center; padding-bottom: 25px;">
Rejected comments are "@Model.RejectedComments"
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mpx-15" bgcolor="#949196" style="border-radius: 0 0 10px 10px; padding: 50px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" style="padding-bottom: 20px;">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_facebook.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_instagram.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_twitter.png")" width="34" height="34" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="34" style="font-size: 0; line-height: 0; text-align: left;">
<a href="javascript:;" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "ico_pinterest.png")" width="34" height="34" border="0" alt="" /></a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="l-white" style="font-size: 14px; font-family: Metropolis, sans-serif; min-width: auto !important; line-height: 24px; text-align: center; color: #ffffff; padding-bottom: 20px;">
<a href="mailto:info@Hims.com" target="_blank" class="link" style="text-decoration: none; color: #ffffff;"><span class="link" style="text-decoration: none; color: #ffffff;">info@Hims.com</span></a> - <a href="https://www.Hims.com" target="_blank" class="link" style="text-decoration: none; color: #ffffff;"><span class="link" style="text-decoration: none; color: #ffffff;">www.Hims.com</span></a>
</td>
</tr>
<tr>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="img" width="117" style="font-size: 0; line-height: 0; text-align: left;">
<a href="@Model.IOSAppLink" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "btn_appstore.png")" width="117" height="40" border="0" alt="" /></a>
</td>
<td class="img" width="15" style="font-size: 0; line-height: 0; text-align: left;"></td>
<td class="img" width="117" style="font-size: 0; line-height: 0; text-align: left;">
<a href="@Model.AndroidAppLink" target="_blank"><img src="@(Model.MailTemplatesImagesLink + "btn_gplay.png")" width="117" height="40" border="0" alt="" /></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l-grey" style="padding-top: 20px; padding-bottom: 20px;"></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>
\ No newline at end of file
@{
Layout = "_Layout";
ViewBag.Title = "Server Error";
}
<h1 class="error-title text-danger">500 Internal Server Error</h1>
<h5 class="error-subtitle">Oops! There was an error, please try again later.</h5>
<p class="error-text">The server encountered an internal server error and was unable to complete your request.</p>
\ No newline at end of file
@{
Layout = "_Layout";
ViewBag.Title = "Expired";
}
<h1 class="error-title text-danger">Page Expired</h1>
<h5 class="error-subtitle">Oops! The page you were looking for has been expired.</h5>
<p class="error-text">You may have mistyped the address or the page may have expired. Try request for new one.</p>
\ No newline at end of file
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title | Careaxes</title>
<meta content="Careaxes" name="description">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="application-name" content="Careaxes REST API"/>
<link rel="shortcut icon" href="@Url.Content("~/assets/images/favicon.png")">
<link type="text/css" href="@Url.Content("~/assets/fonts/style.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/bootstrap.min.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/style.css")" rel="stylesheet">
<link type="text/css" href="@Url.Content("~/assets/css/custom.css")" rel="stylesheet">
</head>
<body>
<div class="error-container">
<div class="container ht-100p text-center">
<div class="ht-100p error-content">
<div class="error-logo">
<img src="@Url.Content("~/assets/images/logo_dark.png")" height="30" alt="Careaxes">
</div>
<div class="error-icon">
<img src="@Url.Content("~/assets/images/error.png")" width="404" alt="Error">
</div>
@RenderBody()
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
@{
Layout = "_Layout";
ViewBag.Title = "Not Found";
}
<h1 class="error-title text-danger">404 Page Not Found</h1>
<h5 class="error-subtitle">Oops! The page you were looking for doesn't exist.</h5>
<p class="error-text">You may have mistyped the address or the page may have moved.</p>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment