Example #1
0
        public static void Should_Generate_Different_NSS()
        {
            var res      = FiscalStringsUtils.GenerateCURPs(100);
            var distinct = res.Distinct();

            Assert.Equal(distinct.Count(), res.Count());
        }
        public async Task <List <T> > CreateDefaultAsyncList <T>(Guid identityWorkId, Guid instanceID,
                                                                 string rfc            = "RAQÑ7701212M3", string nss       = "833531862",
                                                                 string curp           = "KAHO641101HDFLKS06", string name = "Jaime",
                                                                 string firstLastName  = "Duende",
                                                                 string secondLastName = "Gongora y Gongora",
                                                                 string code           = "1",
                                                                 bool randomValues     = false, int laps = 1) where T : BaseEntity
        {
            //Act Dependencies
            var deparments    = Guid.Parse("1AB7ADFE-9E51-47A2-BF6E-38381415BFD1");
            var jobPositions  = Guid.Parse("DC6FA1A7-59DD-4E29-BE13-1C97404EFBF8");
            var periodManager = new MiddlewareManager <Period>(new BaseRecordManager <Period>(), new PeriodValidator());
            var period        = await periodManager.GetAllAsync(identityWorkId, instanceID);

            var periodType = new List <PeriodType>();

            if (!period.Any())
            {
                var fiscalYear  = DateTime.Now.Year;
                var initialDate = new DateTime(fiscalYear, 1, 1);
                var finalDate   = new DateTime(fiscalYear, 12, 31);

                var periodTypeManager = new MiddlewareManager <PeriodType>(new BaseRecordManager <PeriodType>(),
                                                                           new PeriodTypeValidator());
                periodType = new MemoryStorageContext().GetDefaultPeriodType(identityWorkId, instanceID, Guid.NewGuid(), PaymentPeriodicity.Biweekly, 15M,
                                                                             AdjustmentPay_16Days_Febrary.PayCalendarDays, forceUpdate: true);
                await periodTypeManager.CreateAsync(periodType, identityWorkId);

                period = new MemoryStorageContext().GetDefaultPeriod(identityWorkId, instanceID, Guid.NewGuid(), initialDate, finalDate, fiscalYear, periodType.FirstOrDefault(p => p.PaymentPeriodicity == PaymentPeriodicity.Biweekly));
                await periodManager.CreateAsync(period, identityWorkId);
            }

            var workshifts = await new WorkshiftManagerUT().CreateDefaultAsync <Workshift>(identityWorkId, instanceID);
            var emploRegID = Guid.Parse("AFBBA215-7B9F-4EE6-AE4E-12721485F7B1");
            //Arrange
            var employees = new List <Employee>();

            var rfcs  = FiscalStringsUtils.GenerateRFCs(laps);
            var curps = FiscalStringsUtils.GenerateCURPs(laps);
            var NSSs  = FiscalStringsUtils.GenerateNSS(laps);

            var actualCode = 101;

            for (int i = 0; i < laps; i++)
            {
                if (randomValues)
                {
                    Random _random = new Random();
                    var    num     = _random.Next(0, 90);
                    rfc           = rfcs[i];
                    curp          = curps[i];
                    nss           = NSSs[i];
                    code          = (actualCode++).ToString();
                    firstLastName = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 5);
                }

                employees.Add(new Employee()
                {
                    ID                     = Guid.NewGuid(),
                    Active                 = true,
                    company                = identityWorkId,
                    RFC                    = rfc,
                    Timestamp              = DateTime.UtcNow,
                    InstanceID             = instanceID,
                    user                   = Guid.NewGuid(),
                    BirthDate              = DateTime.Now,
                    NSS                    = nss,
                    BornPlace              = "Guadalajara",
                    CivilStatus            = CivilStatus.Viudo,
                    Code                   = code,
                    CURP                   = curp,
                    DeleteDate             = null,
                    Name                   = name,
                    FirstLastName          = firstLastName,
                    SecondLastName         = secondLastName,
                    Gender                 = Gender.Male,
                    EntryDate              = new DateTime(DateTime.UtcNow.Year - 1, 1, 1),
                    JobPositionID          = jobPositions,
                    DepartmentID           = deparments,
                    PeriodTypeID           = period.FirstOrDefault().PeriodTypeID,
                    WorkshiftID            = workshifts.FirstOrDefault().ID,
                    EmployerRegistrationID = emploRegID,
                    BankAccount            = "123456789145214587",
                    EmployeeTrustLevel     = EmployeeTrustLevel.Trusted,
                    StatusID               = 1,
                    Description            = "desc",
                    RegimeType             = EmployeeRegimeType.Salaries,
                    ContractType           = ContractType.IndefiniteTermEmploymentContract,
                    DailySalary            = 2150.45m,
                    ContributionBase       = BaseQuotation.Fixed,
                    SalaryZone             = SalaryZone.ZoneA,
                    PaymentBase            = PaymentBase.SalaryComission,
                    SBCFixedPart           = 2150.45m,
                    SBCMax25UMA            = 2112.25m,
                    SBCVariablePart        = 1.54m,
                    LocalStatus            = CotorriaStatus.Active,
                    LastStatusChange       = DateTime.Now
                });
            }
            //Act
            var middlewareManager = new MiddlewareManager <Employee>(new BaseRecordManager <Employee>(), new EmployeeValidator());
            await middlewareManager.CreateAsync(employees, new LicenseParams()
            {
                IdentityWorkID = identityWorkId
            });

            return(employees as List <T>);
        }