public InputInvoiceDocument Create(InputInvoiceDocument InputInvoiceDocument)
        {
            if (context.InputInvoiceDocuments.Where(x => x.Identifier != null && x.Identifier == InputInvoiceDocument.Identifier).Count() == 0)
            {
                InputInvoiceDocument.Id = 0;

                InputInvoiceDocument.Active    = true;
                InputInvoiceDocument.UpdatedAt = DateTime.Now;
                InputInvoiceDocument.CreatedAt = DateTime.Now;
                context.InputInvoiceDocuments.Add(InputInvoiceDocument);
                return(InputInvoiceDocument);
            }
            else
            {
                // Load item that will be updated
                InputInvoiceDocument dbEntry = context.InputInvoiceDocuments
                                               .FirstOrDefault(x => x.Identifier == InputInvoiceDocument.Identifier && x.Active == true);

                if (dbEntry != null)
                {
                    dbEntry.CompanyId      = InputInvoiceDocument.CompanyId ?? null;
                    dbEntry.CreatedById    = InputInvoiceDocument.CreatedById ?? null;
                    dbEntry.InputInvoiceId = InputInvoiceDocument.InputInvoiceId ?? null;
                    // Set properties
                    dbEntry.Name       = InputInvoiceDocument.Name;
                    dbEntry.CreateDate = InputInvoiceDocument.CreateDate;
                    dbEntry.Path       = InputInvoiceDocument.Path;
                    dbEntry.ItemStatus = InputInvoiceDocument.ItemStatus;
                    // Set timestamp
                    dbEntry.UpdatedAt = DateTime.Now;
                }

                return(dbEntry);
            }
        }
        public static List <InputInvoiceDocumentViewModel> ConvertToInputInvoiceDocumentViewModelList(this IEnumerable <InputInvoiceDocument> inputInvoiceDocuments)
        {
            List <InputInvoiceDocumentViewModel> InputInvoiceDocumentViewModels = new List <InputInvoiceDocumentViewModel>();

            foreach (InputInvoiceDocument InputInvoiceDocument in inputInvoiceDocuments)
            {
                InputInvoiceDocumentViewModels.Add(InputInvoiceDocument.ConvertToInputInvoiceDocumentViewModel());
            }
            return(InputInvoiceDocumentViewModels);
        }
        public InputInvoiceDocument Delete(Guid identifier)
        {
            InputInvoiceDocument dbEntry = context.InputInvoiceDocuments
                                           .Union(context.ChangeTracker.Entries()
                                                  .Where(x => x.State == EntityState.Added && x.Entity.GetType() == typeof(InputInvoiceDocument))
                                                  .Select(x => x.Entity as InputInvoiceDocument))
                                           .FirstOrDefault(x => x.Identifier == identifier && x.Active == true);

            if (dbEntry != null)
            {
                dbEntry.Active    = false;
                dbEntry.UpdatedAt = DateTime.Now;
            }
            return(dbEntry);
        }
        public static InputInvoiceDocument ConvertToInputInvoiceDocument(this InputInvoiceDocumentViewModel inputInvoiceDocumentViewModel)
        {
            InputInvoiceDocument InputInvoiceDocument = new InputInvoiceDocument()
            {
                Id         = inputInvoiceDocumentViewModel.Id,
                Identifier = inputInvoiceDocumentViewModel.Identifier,

                InputInvoiceId = inputInvoiceDocumentViewModel.InputInvoice?.Id ?? null,

                Name       = inputInvoiceDocumentViewModel.Name,
                CreateDate = inputInvoiceDocumentViewModel.CreateDate,
                Path       = inputInvoiceDocumentViewModel.Path,
                ItemStatus = inputInvoiceDocumentViewModel.ItemStatus,
                Active     = inputInvoiceDocumentViewModel.IsActive,

                CreatedById = inputInvoiceDocumentViewModel.CreatedBy?.Id ?? null,
                CompanyId   = inputInvoiceDocumentViewModel.Company?.Id ?? null,

                CreatedAt = inputInvoiceDocumentViewModel.CreatedAt,
                UpdatedAt = inputInvoiceDocumentViewModel.UpdatedAt
            };

            return(InputInvoiceDocument);
        }
        public static InputInvoiceDocumentViewModel ConvertToInputInvoiceDocumentViewModelLite(this InputInvoiceDocument inputInvoiceDocument)
        {
            InputInvoiceDocumentViewModel InputInvoiceDocumentViewModel = new InputInvoiceDocumentViewModel()
            {
                Id         = inputInvoiceDocument.Id,
                Identifier = inputInvoiceDocument.Identifier,

                Name       = inputInvoiceDocument.Name,
                CreateDate = inputInvoiceDocument.CreateDate,
                Path       = inputInvoiceDocument.Path,
                ItemStatus = inputInvoiceDocument.ItemStatus,
                IsActive   = inputInvoiceDocument.Active,

                UpdatedAt = inputInvoiceDocument.UpdatedAt,
                CreatedAt = inputInvoiceDocument.CreatedAt
            };

            return(InputInvoiceDocumentViewModel);
        }
        public List <InputInvoiceDocument> GetInputInvoiceDocuments(int companyId)
        {
            List <InputInvoiceDocument> InputInvoiceDocuments = new List <InputInvoiceDocument>();

            string queryString =
                "SELECT InputInvoiceDocumentId, InputInvoiceDocumentIdentifier, " +
                "InputInvoiceId, InputInvoiceIdentifier, InputInvoiceCode, " +
                "Name, CreateDate, Path, ItemStatus, " +
                "Active, UpdatedAt, CreatedById, CreatedByFirstName, CreatedByLastName, " +
                "CompanyId, CompanyName " +
                "FROM vInputInvoiceDocuments " +
                "WHERE CompanyId = @CompanyId AND Active = 1;";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand command = connection.CreateCommand();
                command.CommandText = queryString;
                command.Parameters.Add(new SqlParameter("@CompanyId", companyId));

                connection.Open();
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    InputInvoiceDocument inputInvoiceDocument;
                    while (reader.Read())
                    {
                        inputInvoiceDocument            = new InputInvoiceDocument();
                        inputInvoiceDocument.Id         = Int32.Parse(reader["InputInvoiceDocumentId"].ToString());
                        inputInvoiceDocument.Identifier = Guid.Parse(reader["InputInvoiceDocumentIdentifier"].ToString());

                        if (reader["InputInvoiceId"] != DBNull.Value)
                        {
                            inputInvoiceDocument.InputInvoice            = new InputInvoice();
                            inputInvoiceDocument.InputInvoiceId          = Int32.Parse(reader["InputInvoiceId"].ToString());
                            inputInvoiceDocument.InputInvoice.Id         = Int32.Parse(reader["InputInvoiceId"].ToString());
                            inputInvoiceDocument.InputInvoice.Identifier = Guid.Parse(reader["InputInvoiceIdentifier"].ToString());
                            inputInvoiceDocument.InputInvoice.Code       = reader["InputInvoiceCode"].ToString();
                        }

                        if (reader["Name"] != DBNull.Value)
                        {
                            inputInvoiceDocument.Name = reader["Name"].ToString();
                        }
                        if (reader["CreateDate"] != DBNull.Value)
                        {
                            inputInvoiceDocument.CreateDate = DateTime.Parse(reader["CreateDate"].ToString());
                        }
                        if (reader["Path"] != DBNull.Value)
                        {
                            inputInvoiceDocument.Path = reader["Path"].ToString();
                        }
                        if (reader["ItemStatus"] != DBNull.Value)
                        {
                            inputInvoiceDocument.ItemStatus = Int32.Parse(reader["ItemStatus"].ToString());
                        }
                        inputInvoiceDocument.Active    = bool.Parse(reader["Active"].ToString());
                        inputInvoiceDocument.UpdatedAt = DateTime.Parse(reader["UpdatedAt"].ToString());

                        if (reader["CreatedById"] != DBNull.Value)
                        {
                            inputInvoiceDocument.CreatedBy           = new User();
                            inputInvoiceDocument.CreatedById         = Int32.Parse(reader["CreatedById"].ToString());
                            inputInvoiceDocument.CreatedBy.Id        = Int32.Parse(reader["CreatedById"].ToString());
                            inputInvoiceDocument.CreatedBy.FirstName = reader["CreatedByFirstName"]?.ToString();
                            inputInvoiceDocument.CreatedBy.LastName  = reader["CreatedByLastName"]?.ToString();
                        }

                        if (reader["CompanyId"] != DBNull.Value)
                        {
                            inputInvoiceDocument.Company      = new Company();
                            inputInvoiceDocument.CompanyId    = Int32.Parse(reader["CompanyId"].ToString());
                            inputInvoiceDocument.Company.Id   = Int32.Parse(reader["CompanyId"].ToString());
                            inputInvoiceDocument.Company.Name = reader["CompanyName"].ToString();
                        }

                        InputInvoiceDocuments.Add(inputInvoiceDocument);
                    }
                }
            }
            return(InputInvoiceDocuments);
        }
Exemplo n.º 7
0
        public InputInvoiceResponse Create(InputInvoiceViewModel re)
        {
            InputInvoiceResponse response = new InputInvoiceResponse();

            try
            {
                // Backup notes
                List <InputInvoiceNoteViewModel> inputInvoiceNotes = re.InputInvoiceNotes?.ToList();
                re.InputInvoiceNotes = null;

                // Backup documents
                List <InputInvoiceDocumentViewModel> inputInvoiceDocuments = re.InputInvoiceDocuments?.ToList();
                re.InputInvoiceDocuments = null;

                InputInvoice createdInputInvoice = unitOfWork.GetInputInvoiceRepository().Create(re.ConvertToInputInvoice());

                // Update notes
                if (inputInvoiceNotes != null && inputInvoiceNotes.Count > 0)
                {
                    // Items for create or update
                    foreach (var inputInvoiceNote in inputInvoiceNotes
                             .Where(x => x.ItemStatus == ItemStatus.Added || x.ItemStatus == ItemStatus.Edited)?.ToList() ?? new List <InputInvoiceNoteViewModel>())
                    {
                        inputInvoiceNote.InputInvoice = new InputInvoiceViewModel()
                        {
                            Id = createdInputInvoice.Id
                        };
                        inputInvoiceNote.ItemStatus = ItemStatus.Submited;
                        InputInvoiceNote createdInputInvoiceNote = unitOfWork.GetInputInvoiceNoteRepository()
                                                                   .Create(inputInvoiceNote.ConvertToInputInvoiceNote());
                    }

                    foreach (var item in inputInvoiceNotes
                             .Where(x => x.ItemStatus == ItemStatus.Deleted)?.ToList() ?? new List <InputInvoiceNoteViewModel>())
                    {
                        item.InputInvoice = new InputInvoiceViewModel()
                        {
                            Id = createdInputInvoice.Id
                        };
                        unitOfWork.GetInputInvoiceNoteRepository().Create(item.ConvertToInputInvoiceNote());

                        unitOfWork.GetInputInvoiceNoteRepository().Delete(item.Identifier);
                    }
                }

                // Update documents
                if (inputInvoiceDocuments != null && inputInvoiceDocuments.Count > 0)
                {
                    // Items for create or update
                    foreach (var inputInvoiceDocument in inputInvoiceDocuments
                             .Where(x => x.ItemStatus == ItemStatus.Added || x.ItemStatus == ItemStatus.Edited)?.ToList() ?? new List <InputInvoiceDocumentViewModel>())
                    {
                        inputInvoiceDocument.InputInvoice = new InputInvoiceViewModel()
                        {
                            Id = createdInputInvoice.Id
                        };
                        inputInvoiceDocument.ItemStatus = ItemStatus.Submited;
                        InputInvoiceDocument createdInputInvoiceDocument = unitOfWork.GetInputInvoiceDocumentRepository()
                                                                           .Create(inputInvoiceDocument.ConvertToInputInvoiceDocument());
                    }

                    foreach (var item in inputInvoiceDocuments
                             .Where(x => x.ItemStatus == ItemStatus.Deleted)?.ToList() ?? new List <InputInvoiceDocumentViewModel>())
                    {
                        item.InputInvoice = new InputInvoiceViewModel()
                        {
                            Id = createdInputInvoice.Id
                        };
                        unitOfWork.GetInputInvoiceDocumentRepository().Create(item.ConvertToInputInvoiceDocument());

                        unitOfWork.GetInputInvoiceDocumentRepository().Delete(item.Identifier);
                    }
                }

                unitOfWork.Save();

                response.InputInvoice = createdInputInvoice.ConvertToInputInvoiceViewModel();
                response.Success      = true;
            }
            catch (Exception ex)
            {
                response.InputInvoice = new InputInvoiceViewModel();
                response.Success      = false;
                response.Message      = ex.Message;
            }

            return(response);
        }