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);
        }
Exemple #2
0
        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);
        }