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 }); }
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 }); } }