public static ApplicationLicenseSummary ToLicenseSummaryViewModel(this MicrosoftDynamicsCRMadoxioLicences licence, IList <MicrosoftDynamicsCRMadoxioApplication> applications, IDynamicsClient dynamicsClient) { bool missingLicenceFee = applications.Where(app => app._adoxioLicencefeeinvoiceValue != null && app?.AdoxioApplicationTypeId?.AdoxioIsdefault == true && app?.AdoxioLicenceFeeInvoice?.Statuscode != (int)Adoxio_invoicestatuses.Paid ).Any(); ApplicationLicenseSummary licenseSummary = new ApplicationLicenseSummary { LicenseId = licence.AdoxioLicencesid, LicenseNumber = licence.AdoxioLicencenumber, LicenceTypeCategory = (LicenceTypeCategory)licence?.AdoxioLicenceType?.AdoxioCategory, MissingFirstYearLicenceFee = missingLicenceFee, CurrentOwner = licence?.AdoxioLicencee?.Name, EstablishmentAddressStreet = licence.AdoxioEstablishmentaddressstreet, EstablishmentAddressCity = licence.AdoxioEstablishmentaddresscity, EstablishmentAddressPostalCode = licence.AdoxioEstablishmentaddresspostalcode, EstablishmentPhoneNumber = licence.AdoxioEstablishmentphone, EstablishmentEmail = licence.AdoxioEstablishment?.AdoxioEmail, EstablishmentId = licence.AdoxioEstablishment?.AdoxioEstablishmentid, ExpiryDate = licence.AdoxioExpirydate, Status = StatusUtility.GetLicenceStatus(licence, applications), AllowedActions = new List <ApplicationType>(), TransferRequested = licence.AdoxioTransferrequested.HasValue && (EnumYesNo?)licence.AdoxioTransferrequested == EnumYesNo.Yes, Dormant = licence.AdoxioDormant.HasValue && (EnumYesNo?)licence.AdoxioDormant == EnumYesNo.Yes, Suspended = licence.AdoxioSuspended.HasValue && (EnumYesNo?)licence.AdoxioSuspended == EnumYesNo.Yes, Operated = licence.AdoxioOperated.HasValue && (EnumYesNo?)licence.AdoxioOperated == EnumYesNo.Yes, ThirdPartyOperatorAccountId = licence._adoxioThirdpartyoperatoridValue, TPORequested = licence.AdoxioTporequested.HasValue && (EnumYesNo?)licence.AdoxioTporequested == EnumYesNo.Yes, // indicate whether a third party operator app has been requested RepresentativeFullName = licence.AdoxioRepresentativename, RepresentativeEmail = licence.AdoxioRepresentativeemail, RepresentativePhoneNumber = licence.AdoxioRepresentativephone, RepresentativeCanSubmitPermanentChangeApplications = licence.AdoxioCansubmitpermanentchangeapplications, RepresentativeCanSignTemporaryChangeApplications = licence.AdoxioCansigntemporarychangeapplications, RepresentativeCanObtainLicenceInformation = licence.AdoxioCanobtainlicenceinformation, RepresentativeCanSignGroceryStoreProofOfSale = licence.AdoxioCansigngrocerystoreproofofsales, RepresentativeCanAttendEducationSessions = licence.AdoxioCanattendeducationsessions, RepresentativeCanAttendComplianceMeetings = licence.AdoxioCanattendcompliancemeetings, RepresentativeCanRepresentAtHearings = licence.AdoxioCanrepresentathearings, AutoRenewal = (licence.AdoxioAutorenewal == true) }; if (licence._adoxioLicencesubcategoryidValue != null) { try { var adoxioLicencesubcategory = dynamicsClient.Licencesubcategories.GetByKey(licence._adoxioLicencesubcategoryidValue); licenseSummary.LicenseSubCategory = adoxioLicencesubcategory.AdoxioName; } catch (Exception e) { licenseSummary.LicenseSubCategory = null; } } if (licence.AdoxioThirdPartyOperatorId != null) { licenseSummary.ThirdPartyOperatorAccountName = licence.AdoxioThirdPartyOperatorId.Name; } if (licence.AdoxioEstablishment != null) { licenseSummary.EstablishmentName = licence.AdoxioEstablishment.AdoxioName; licenseSummary.EstablishmentIsOpen = licence.AdoxioEstablishment.AdoxioIsopen; } var mainApplication = applications.Where(app => app.Statuscode == (int)AdoxioApplicationStatusCodes.Approved).FirstOrDefault(); if (mainApplication != null) { licenseSummary.ApplicationId = mainApplication.AdoxioApplicationid; if (mainApplication.AdoxioApplicationTypeId != null) { licenseSummary.ApplicationTypeName = mainApplication.AdoxioApplicationTypeId.AdoxioName; licenseSummary.ApplicationTypeCategory = (ApplicationTypeCategory?)mainApplication.AdoxioApplicationTypeId.AdoxioCategory; } } if (licence.AdoxioLicenceType != null) { licenseSummary.LicenceTypeName = licence.AdoxioLicenceType.AdoxioName; licenseSummary.LicenceTypeCategory = (LicenceTypeCategory?)licence.AdoxioLicenceType.AdoxioCategory; } licenseSummary.Endorsements = GetEndorsements(licenseSummary.LicenseId, dynamicsClient); if (licence?.AdoxioLicenceType?.AdoxioLicencetypesApplicationtypes != null) { //Filter out application types that are not ACTIVE const int ACTIVE = 0; var applicationTypes = licence.AdoxioLicenceType.AdoxioLicencetypesApplicationtypes .Where(appType => appType.Statecode == ACTIVE) .ToList() .OrderBy(appType => appType.AdoxioActiontext); foreach (var item in applicationTypes) { // we don't want to allow you to apply for an endorsement you already have... bool isEndorsementThatIsProcessed = ( item.AdoxioIsendorsement != null && item.AdoxioIsendorsement == true && licenseSummary.Endorsements.Any(e => e.ApplicationTypeId == item.AdoxioApplicationtypeid) ); if (!isEndorsementThatIsProcessed) { licenseSummary.AllowedActions.Add(item.ToViewModel()); } } } licenseSummary.OffsiteStorageLocations = GetOffsiteStorage(licenseSummary.LicenseId, dynamicsClient); licenseSummary.ServiceAreas = GetServiceAreas(licenseSummary.LicenseId, dynamicsClient); return(licenseSummary); }
public static ApplicationLicenseSummary ToLicenseSummaryViewModel(this MicrosoftDynamicsCRMadoxioLicences licence, IList <MicrosoftDynamicsCRMadoxioApplication> applications, IDynamicsClient dynamicsClient) { bool missingLicenceFee = applications.Where(app => app._adoxioLicencefeeinvoiceValue != null && app?.AdoxioApplicationTypeId?.AdoxioIsdefault == true && app?.AdoxioLicenceFeeInvoice?.Statuscode != (int)Adoxio_invoicestatuses.Paid ).Any(); ApplicationLicenseSummary licenseSummary = new ApplicationLicenseSummary { LicenseId = licence.AdoxioLicencesid, LicenseNumber = licence.AdoxioLicencenumber, LicenceTypeCategory = (LicenceTypeCategory)licence?.AdoxioLicenceType?.AdoxioCategory, MissingFirstYearLicenceFee = missingLicenceFee, CurrentOwner = licence?.AdoxioLicencee?.Name, EstablishmentAddressStreet = licence.AdoxioEstablishmentaddressstreet, EstablishmentAddressCity = licence.AdoxioEstablishmentaddresscity, EstablishmentAddressPostalCode = licence.AdoxioEstablishmentaddresspostalcode, EstablishmentPhoneNumber = licence.AdoxioEstablishmentphone, EstablishmentEmail = licence.AdoxioEstablishment?.AdoxioEmail, EstablishmentId = licence.AdoxioEstablishment?.AdoxioEstablishmentid, ExpiryDate = licence.AdoxioExpirydate, Status = StatusUtility.GetLicenceStatus(licence, applications), AllowedActions = new List <ApplicationType>(), TransferRequested = licence.AdoxioTransferrequested.HasValue && (EnumYesNo?)licence.AdoxioTransferrequested == EnumYesNo.Yes, Dormant = licence.AdoxioDormant.HasValue && (EnumYesNo?)licence.AdoxioDormant == EnumYesNo.Yes, Suspended = licence.AdoxioSuspended.HasValue && (EnumYesNo?)licence.AdoxioSuspended == EnumYesNo.Yes, Operated = licence.AdoxioOperated.HasValue && (EnumYesNo?)licence.AdoxioOperated == EnumYesNo.Yes, ThirdPartyOperatorAccountId = licence._adoxioThirdpartyoperatoridValue, TPORequested = licence.AdoxioTporequested.HasValue && (EnumYesNo?)licence.AdoxioTporequested == EnumYesNo.Yes, // indicate whether a third party operator app has been requested RepresentativeFullName = licence.AdoxioRepresentativename, RepresentativeEmail = licence.AdoxioRepresentativeemail, RepresentativePhoneNumber = licence.AdoxioRepresentativephone, RepresentativeCanSubmitPermanentChangeApplications = licence.AdoxioCansubmitpermanentchangeapplications, RepresentativeCanSignTemporaryChangeApplications = licence.AdoxioCansigntemporarychangeapplications, RepresentativeCanObtainLicenceInformation = licence.AdoxioCanobtainlicenceinformation, RepresentativeCanSignGroceryStoreProofOfSale = licence.AdoxioCansigngrocerystoreproofofsales, RepresentativeCanAttendEducationSessions = licence.AdoxioCanattendeducationsessions, RepresentativeCanAttendComplianceMeetings = licence.AdoxioCanattendcompliancemeetings, RepresentativeCanRepresentAtHearings = licence.AdoxioCanrepresentathearings, AutoRenewal = (licence.AdoxioAutorenewal == true) }; if (licence._adoxioLicencesubcategoryidValue != null) { try { var adoxioLicencesubcategory = dynamicsClient.Licencesubcategories.GetByKey(licence._adoxioLicencesubcategoryidValue); licenseSummary.LicenseSubCategory = adoxioLicencesubcategory.AdoxioName; } catch (Exception e) { licenseSummary.LicenseSubCategory = null; } } if (licence.AdoxioThirdPartyOperatorId != null) { licenseSummary.ThirdPartyOperatorAccountName = licence.AdoxioThirdPartyOperatorId.Name; } if (licence.AdoxioEstablishment != null) { licenseSummary.EstablishmentName = licence.AdoxioEstablishment.AdoxioName; licenseSummary.EstablishmentIsOpen = licence.AdoxioEstablishment.AdoxioIsopen; } var mainApplication = applications.Where(app => app.Statuscode == (int)AdoxioApplicationStatusCodes.Approved).FirstOrDefault(); // 2-13-2020 adjust criteria so that we get the first approved CRS rather than simply the first CRS, to ensure that we get the correct record. var crsApplication = applications.Where(app => app.Statuscode == (int)AdoxioApplicationStatusCodes.Approved && app.AdoxioApplicationTypeId.AdoxioName == "Cannabis Retail Store").FirstOrDefault(); if (mainApplication != null) { licenseSummary.ApplicationId = mainApplication.AdoxioApplicationid; if (mainApplication.AdoxioApplicationTypeId != null) { licenseSummary.ApplicationTypeName = mainApplication.AdoxioApplicationTypeId.AdoxioName; licenseSummary.ApplicationTypeCategory = (ApplicationTypeCategory?)mainApplication.AdoxioApplicationTypeId.AdoxioCategory; } } if (crsApplication != null) { // 2-7-2020 set the criteria to be No Contraventions rather than Pass. LCSD-2524 licenseSummary.StoreInspected = crsApplication.AdoxioAppchecklistinspectionresults == (int)InspectionStatus.NoContraventions; } if (licence.AdoxioLicenceType != null) { licenseSummary.LicenceTypeName = licence.AdoxioLicenceType.AdoxioName; licenseSummary.LicenceTypeCategory = (LicenceTypeCategory?)licence.AdoxioLicenceType.AdoxioCategory; } licenseSummary.Endorsements = GetEndorsements(licenseSummary.LicenseId, dynamicsClient); if (licence != null && licence.AdoxioLicenceType != null && licence.AdoxioLicenceType.AdoxioLicencetypesApplicationtypes != null) { foreach (var item in licence.AdoxioLicenceType.AdoxioLicencetypesApplicationtypes) { // we don't want to allow you to apply for an endorsement you already have... if (item.AdoxioIsendorsement != null && item.AdoxioIsendorsement == true && licenseSummary.Endorsements.Where(e => e.ApplicationTypeId == item.AdoxioApplicationtypeid).Any()) { // there is probably a better way to write this... } else { licenseSummary.AllowedActions.Add(item.ToViewModel()); } } } licenseSummary.OffsiteStorageLocations = GetOffsiteStorage(licenseSummary.LicenseId, dynamicsClient); return(licenseSummary); }