private static Company GetCompany(MongoDbTask mongoDbTask)
        {
            var result = default(Company);
            var mongoDbCompaniesDataSource = new MongoDbCompaniesDataSource();

            result = mongoDbCompaniesDataSource.GetCompany(mongoDbTask.CompanyId);
            return(result);
        }
        private static Contact GetContact(MongoDbTask mongoDbTask)
        {
            var result = default(Contact);
            var mongoDbContactsDataSource = new MongoDbContactsDataSource();

            result = mongoDbContactsDataSource.GetContact(mongoDbTask.ContactId);
            return(result);
        }
        private static User GetUser(MongoDbTask mongoDbTask)
        {
            var result = default(User);
            var mongoDbUsersDataSource = new MongoDbUsersDataSource();

            result = mongoDbUsersDataSource.GetUser(mongoDbTask.UserId);
            return(result);
        }
        private bool QueryTask(MongoDbTask mongoDbTask, TasksSearchQuery taskSearchQuery)
        {
            var result = false;

            if (mongoDbTask.LastModified >= taskSearchQuery.LastModified)
            {
                result = true;
            }
            if (result && mongoDbTask.RowStatus == 1)
            {
                result = false;
            }

            return(result);
        }
        private Task ToTask(MongoDbTask mongoDbTask)
        {
            var task = new Task();

            task.Id             = mongoDbTask.Id;
            task.DeliveryNumber = mongoDbTask.DeliveryNumber;

            var user = GetUser(mongoDbTask);

            task.User = new User(user);

            var company = GetCompany(mongoDbTask);

            task.Company = new Company(company);

            var senderAddress = GetAddress(mongoDbTask.SenderAddressId);

            task.SenderAddress = new Address(senderAddress);

            var reciverAddress = GetAddress(mongoDbTask.ReciverAddressId);

            task.ReciverAddress = new Address(reciverAddress);

            task.TaskStatus   = mongoDbTask.TaskStatus;
            task.Created      = mongoDbTask.Created;
            task.PickedUpAt   = mongoDbTask.PickedUpAt;
            task.DeliveredAt  = mongoDbTask.DeliveredAt;
            task.PickUpTime   = mongoDbTask.PickUpTime;
            task.DeliveryTime = mongoDbTask.DeliveryTime;
            task.LastModified = mongoDbTask.LastModified;
            task.Comment      = mongoDbTask.Comment;

            var contact = GetContact(mongoDbTask);

            task.Contact         = new Contact(contact);
            task.Contact.Company = task.Company;

            task.RowStatus     = mongoDbTask.RowStatus;
            task.TaskType      = mongoDbTask.TaskType;
            task.DataExtention = mongoDbTask.DataExtention;
            task.SignatureId   = mongoDbTask.SignatureId;
            task.ImageId       = mongoDbTask.ImageId;
            task.UserComment   = mongoDbTask.UserComment;
            task.Rejected      = mongoDbTask.Rejected;


            return(task);
        }
        public void SaveTask(Task task)
        {
            if (task.Id == 0)
            {
                task.Id      = NewId();
                task.Created = DateTime.Now;
            }

            var mongoDbTask = new MongoDbTask(task);

            mongoDbTask.LastModified = DateTime.Now;

            var tasksCollection = GetTasksCollection();

            tasksCollection.Save(mongoDbTask);
        }