예제 #1
0
        public async Task <TimesheetResult> AddTimesheet(TimeSheetPoco poco)
        {
            var result = await _context.AddAsync(poco);

            await _context.SaveChangesAsync();

            return(new TimesheetResult
            {
                Id = poco.Id,
                IsSuccess = true,
                TimesheetCode = poco.Code
            });
        }
예제 #2
0
        public async Task <TimesheetResult> AddTimesheet(TimesheetViewModel input)
        {
            string code = "";

            try
            {
                TimeSheetPoco poco = new TimeSheetPoco
                {
                    AssistantTime    = TimeSpan.Parse(input.SecondaryHours.ToString() + ":" + input.SecondaryMins.ToString()),
                    OperatorTime     = TimeSpan.Parse(input.PrimaryHours.ToString() + ":" + input.PrimaryMins.ToString()),
                    DateCreated      = DateTime.Now,
                    Deleted          = false,
                    Code             = "",
                    Description      = input.Description,
                    DetailedPoint    = input.DetailedPoint,
                    OriginalQuote    = input.OriginalQuote,
                    QuoteNo          = input.QuoteNumber,
                    SheetStatus      = input.Status,
                    SINumber         = input.SiNumber,
                    SiteId           = input.Site,
                    SpecificLocation = input.SpecificLocation,
                    UsersId          = input.PrimaryTechnician
                };
                var site = await _context.Sites.FindAsync(poco.SiteId);

                var lastCode = await _context.TimeSheets.OrderByDescending(x => x.DateCreated).FirstOrDefaultAsync();

                if (lastCode != null)
                {
                    int           suffix    = Convert.ToInt32(lastCode.Code.Split("-")[2]);
                    StringBuilder newPrefix = new StringBuilder();
                    StringBuilder newSuffix = new StringBuilder();
                    if (suffix == 9999)
                    {
                        newSuffix.Append("0000");
                        char firstPrefix = lastCode.Code.Split("-")[0][0];
                        char lastPrefix  = lastCode.Code.Split("-")[0][1];
                        if (lastPrefix == 'Z')
                        {
                            lastPrefix = 'A';
                            int index = alphabet.IndexOf(firstPrefix);
                            firstPrefix = alphabet[index + 1];
                        }
                        else
                        {
                            int index = alphabet.IndexOf(lastPrefix);
                            lastPrefix = alphabet[index + 1];
                        }
                        newPrefix = new StringBuilder();
                        newPrefix.Append(firstPrefix);
                        newPrefix.Append(lastPrefix);
                    }
                    else
                    {
                        suffix += 1;
                        newSuffix.Append(string.Format("{0:D4}", suffix));
                        newPrefix.Append(lastCode.Code.Split("-")[1]);
                    }
                    poco.Code = site.Abbr + "-" + newPrefix.ToString() + "-" + newSuffix.ToString();
                }
                else
                {
                    poco.Code = site.Abbr + "-" + "AA-0001";
                }
                code = poco.Code;
                await _timesheet.AddTimesheet(poco);

                await _context.SaveChangesAsync();

                //foreach (var email in _configuration["clients:plumbery:emails"].Split("::"))
                //{
                //    await _emailSender.SendEmailAsync(email, "Timesheet " + poco.Code + " submitted", "");
                //}

                return(new TimesheetResult
                {
                    IsSuccess = true,
                    TimesheetCode = poco.Code
                });
            }
            catch (Exception ex)
            {
                return(new TimesheetResult
                {
                    ErrorMessage = ex.Message,
                    IsSuccess = true,
                    TimesheetCode = code
                });
            }
        }