public bool InsertOrUpdate(DebitNote DebitNote) { var notaDebito = DebitNote; var contratada = _contractorApp.Search(c => c.Id == notaDebito.ContractorId).Include(c => c.DebitNotes).FirstOrDefault(); // Verifico se a nota de débito correponde a empresa selecionada. if (contratada.DebitNotes.Any(c => c.NumberDebitNote == notaDebito.NumberDebitNote)) { return(_epr.InsertOrUpdate(DebitNote)); } var numeroNd = ""; // Pesquiso a última nota de débito do mês recorrente da empresa selecionada. // Cano não exista retorna 000000000, para iniciar a contagem. var oldNd = contratada.DebitNotes.LastOrDefault( c => c.DateRegistration != null && c.DateRegistration.Value.Month == DateTime.Now.Month)? .NumberDebitNote ?? "000000000"; // Pego o cnpj da empresa selecionada var cnpj = new Cnpj(contratada.Cnpj).Codigo; // Faço este loop, pois pode ocorrer situação de o número ser repetido. while (true) { // Pego o último contador e incremento mais 1 (um). var nd = (Convert.ToInt32(oldNd.Remove(0, 6)) + 1).ToString(); // Crio a ND seguindo a regra: CNPJ (apenas dígitos) + ANO + MÊS + Contador. numeroNd = cnpj.Substring(12, 2) + DateTime.Now.Year.ToString().Substring(2, 2) + DateTime.Now.Month.ToString().PadLeft(2, '0') + nd.PadLeft(3, '0'); notaDebito.NumberDebitNote = numeroNd; if (!_epr.Search(c => c.NumberDebitNote == notaDebito.NumberDebitNote).Any()) { break; } oldNd = numeroNd; } return(_epr.InsertOrUpdate(DebitNote)); }
public bool RemoveListId(IList <int> listId) { _ContractorApp.Remove(_ContractorApp.Search(c => listId.Contains(c.Id)).ToList()); return(_connection.Save()); }