/// <summary>
        /// Default constructor which also registers the fields required by this updater
        /// </summary>
        public InitialOrderParent()
        {
            spawnOrder = 0;

            RequiredFields.Add(ParticleFields.Order);
        }
示例#2
0
 public BeamPostUpdate()
 {
     RequiredFields.Add(ParticleFields.Position);
     RequiredFields.Add(ParticleFields.Velocity);
     RequiredFields.Add(ParticleFields.RandomSeed);
 }
示例#3
0
 public SalesOrder()
 {
     IgnoreProperties.Add(nameof(orderNo));
     IgnoreProperties.Add("orderNumber");
     RequiredFields.Add(nameof(orderType), new DtoValue("SO"));
 }
示例#4
0
 /// <summary>
 /// Default constructor which also registers the fields required by this updater
 /// </summary>
 public InitialColorParent()
 {
     RequiredFields.Add(ParticleFields.Color);
     RequiredFields.Add(ParticleFields.RandomSeed);
 }
        /// <summary>
        /// Default constructor which also registers the fields required by this updater
        /// </summary>
        public InitialSpawnOrderGroup()
        {
            spawnOrder = 0;

            RequiredFields.Add(ParticleFields.Order);
        }
示例#6
0
 public UpdaterSpeedToDirection()
 {
     RequiredFields.Add(ParticleFields.Position);
     RequiredFields.Add(ParticleFields.OldPosition);
     RequiredFields.Add(ParticleFields.Direction);
 }
示例#7
0
 public Address()
 {
     RequiredFields.Add("county", new DtoValue(null));
 }
示例#8
0
        /// <summary>
        /// Default key deserializer
        /// </summary>
        void IBigtableKeySerializer <object> .DeserializeKey(object instance, byte[] keyBytes, Encoding encoding)
        {
            if (instance == null)
            {
                throw new InvalidOperationException("Can not deserialize keys on a null reference of type " + _type.SimpleName());
            }

            // Locals
            //var bytes = new List<byte[]>();
            var separator = encoding.GetBytes(KeyFieldSeparator);

            var keys = new List <byte[]>();

            // This is not pretty.
            // TODO: Is there a better way?

            // Split key
            var prevIndex = 0;

            for (int index = 0; index < keyBytes.Length; index++)
            {
                var foundKey = true;
                for (int kIndex = 0; kIndex < separator.Length; kIndex++)
                {
                    if (keyBytes[index + kIndex] != separator[kIndex])
                    {
                        foundKey = false;
                        break;
                    }
                }
                if (foundKey || index == keyBytes.Length - 1)
                {
                    // TODO: Account for multibyte separators
                    var size = index == keyBytes.Length - 1 ? keyBytes.Length - prevIndex : index - prevIndex;
                    var key  = new byte[size]; // mmmm, byte sized

                    // A zero byte key is okay, and must be accounted
                    // in order for the key deserialer to find the right slots
                    if (size > 0)
                    {
                        Array.Copy(keyBytes, prevIndex, key, 0, size);
                    }
                    keys.Add(key);
                    index    += separator.Length;
                    prevIndex = index;
                }
            }

            // Ensure we have some key data
            if (!keys.Any())
            {
                throw new SerializationException("No keys found while deserializing " + _type.SimpleName());
            }

            // Populate the key fields on the POCO
            for (int index = 0; index < KeyFields.Length; index++)
            {
                // Localize
                var fieldName = KeyFields[index];
                var required  = RequiredFields.Contains(fieldName);

                // Are there more key fields than we have keys?
                if (index >= keys.Count)
                {
                    // No more key bytes available, was this required?
                    if (required)
                    {
                        throw new KeyNotFoundException(String.Format("Member {0} on type {1} is marked as required but is missing in the deserialization stream.", FieldNameLookup[fieldName], _type));
                    }

                    // Non-required field, continue to check the rest of the fields
                    continue;
                }

                // Localize this key's value
                var valueBytes = keys[index];
                //var value = Getters[field](instance);

                // Missing value?
                if (valueBytes == null)
                {
                    if (required)
                    {
                        throw new SerializationException(String.Format("Member {0} on type {1} is marked as required but was not specified", FieldNameLookup[fieldName], _type));
                    }

                    // Continue to next key field
                    continue;
                }

                // Get destination type
                var valueType = MemberTypes[fieldName];

                // Find a serializer for this type
                var serializer = GetSerializerForType(valueType);

                // Deserialize
                var value = serializer.DeserializeField(valueType, valueBytes, TableEncoding);

                // Store value
                Setters[fieldName](instance, value);
            }
        }
示例#9
0
        /// <summary>
        /// Default key serializer
        /// </summary>
        byte[] IBigtableKeySerializer <object> .SerializeKey(object instance, Encoding encoding)
        {
            // Contract
            if (instance == null)
            {
                throw new InvalidOperationException("Can not serialize keys on a null reference.");
            }

            // Locals
            //bool missingKey = false;
            var bytes     = new List <byte[]>();
            var separator = encoding.GetBytes(KeyFieldSeparator);

            // Iterate keys
            for (int index = 0; index < KeyFields.Length; index++)
            {
                // Localize
                var fieldName = KeyFields[index];
                var required  = RequiredFields.Contains(fieldName);
                var value     = Getters[fieldName](instance);

                //
                if (value == null)
                {
                    if (required)
                    {
                        throw new SerializationException(String.Format("The member {0} on type {1} is marked as required but was not specified", FieldNameLookup[fieldName], _type));
                    }
                    bytes.Add(separator);
                    //missingKey = true;
                    continue;
                }
                //if (missingKey)
                //{
                //    // Programmer exception
                //    var exception = new MissingFieldException(_type.Name, memberName);
                //    // User exception // TODO: I think I designed around this
                //    throw new SerializationException("The default serializer insists that the primary keys are filled in order.  Missing keys are okay as long as all subsequent keys are missing as well.", exception);
                //}
                var valueType  = value.GetType();
                var serializer = GetSerializerForType(valueType);

                if (IsBigBoxed[fieldName])
                {
                    if (!IsSpecified[fieldName](instance))
                    {
                        bytes.Add(new byte[0]);
                        continue;
                    }
                    //var fieldType = MemberTypes[memberName];
                    //var access = GetKeyAccess(fieldType);
                    //value = access.ValueGetter(value);
                }
                var serialized = serializer.SerializeField(valueType, value, TableEncoding);
                bytes.Add(serialized);
            }
            var bytesSize = bytes.Count - 1;
            var sepLength = (bytesSize) * separator.Length;
            var results   = new byte[sepLength + bytes.Sum(b => b.Length)];
            var ptr       = 0;

            for (int index = 0; index < bytes.Count; index++)
            {
                // Get field bytes
                var source = bytes[index];

                // Copy to result array in correct position
                Array.Copy(source, 0, results, ptr, source.Length);

                // Move ptr forward
                ptr += source.Length;
                if (index < bytesSize)
                {
                    // Copy in separator
                    Array.Copy(separator, 0, results, ptr, sepLength);

                    // Move ptr foward
                    ptr += sepLength;
                }
            }

            // Tada!
            return(results);
        }
示例#10
0
        public async Task <IActionResult> Store([FromForm] CourseOutlineRequest request)
        {
            try
            {
                if (_userRepository.LogCurrentUser().canCreate == false)
                {
                    return(Unauthorized(_UnAuthorized));
                }


                CourseOutline model = new CourseOutline();
                model.title       = request.title;
                model.courseId    = request.courseId;
                model.userGroupId = request.userGroupId;
                model.visibility  = request.visibility;
                model.duration    = request.duration;
                model.description = request.description;
                model.Course      = request.Course;
                model.UserGroup   = request.UserGroup;


                RequiredFields modelRequest = new RequiredFields();
                modelRequest.CourseOutline = model;
                object validateFields = _validationService.ValidateRequest("Course Outline", modelRequest);
                if (JsonConvert.SerializeObject(validateFields).Length > 2)
                {
                    return(BadRequest(validateFields));
                }


                var checkExists = _context.CourseOutline.Where(x => x.title == request.title && x.courseId == request.courseId).Any();
                if (checkExists == true)
                {
                    return(BadRequest(new GenericResult {
                        Response = false, Message = request.title + " is already exists"
                    }));
                }


                if (request.featureImage != null)
                {
                    if (request.featureImage.Length > 0)
                    {
                        Stream stream = request.featureImage.OpenReadStream();

                        var    path = Path.Combine(_hostingEnvironment.WebRootPath, _fileDirectory.virtualDirectory);
                        string courseOutlineImageFolder = String.Format("{0}\\Content\\Images\\CourseOutline", path);

                        if (!Directory.Exists(courseOutlineImageFolder))
                        {
                            Directory.CreateDirectory(courseOutlineImageFolder);
                        }

                        var id        = Guid.NewGuid();
                        var extension = Path.GetExtension(request.featureImage.FileName);
                        var fileName  = id.ToString() + extension.ToString().ToLower();


                        using (var zipStream = new FileStream(Path.Combine(courseOutlineImageFolder, fileName), FileMode.Create))
                        {
                            request.featureImage.CopyTo(zipStream);
                        }
                        model.featureImage = fileName;
                    }
                }

                if (request.interactiveVideo != null)
                {
                    if (request.interactiveVideo.Length > 0)
                    {
                        Stream stream = request.interactiveVideo.OpenReadStream();


                        var    path = Path.Combine(_hostingEnvironment.WebRootPath, _fileDirectory.virtualDirectory);
                        string courseOutlineVideoFolder = String.Format("{0}\\Content\\Video\\CourseOutline", path);

                        if (!Directory.Exists(courseOutlineVideoFolder))
                        {
                            Directory.CreateDirectory(courseOutlineVideoFolder);
                        }

                        var idVideo       = Guid.NewGuid();
                        var extension     = Path.GetExtension(request.interactiveVideo.FileName);
                        var fileNameVideo = idVideo.ToString() + extension.ToString().ToLower();

                        model.interactiveVideo = idVideo.ToString();


                        using (var zipStream = new FileStream(Path.Combine(courseOutlineVideoFolder, fileNameVideo), FileMode.Create))
                        {
                            request.interactiveVideo.CopyTo(zipStream);
                            using (var archive = new ZipArchive(zipStream, ZipArchiveMode.Read))
                            {
                                archive.ExtractToDirectory(Path.Combine(courseOutlineVideoFolder, idVideo.ToString()));
                            }
                        }
                    }
                }
                _context.CourseOutline.Add(model);
                await _context.SaveChangesAsync();



                // start: Course Outline Prerequisite
                if (request.CourseOutlinePrerequisite != null)
                {
                    for (int copKey = 0; request.CourseOutlinePrerequisite.Count() > copKey; copKey++)
                    {
                        CourseOutlinePrerequisite copModel = new CourseOutlinePrerequisite();
                        copModel.courseOutlineId = model.id;
                        copModel.courseId        = request.courseId;
                        copModel.preRequisiteId  = request.CourseOutlinePrerequisite[copKey].preRequisiteId;
                        _context.CourseOutlinePrerequisite.Add(copModel);
                        await _context.SaveChangesAsync();
                    }
                }

                // start: Course Outline Milestone
                if (request.CourseOutlineMilestone != null)
                {
                    for (int comKey = 0; request.CourseOutlineMilestone.Count() > comKey; comKey++)
                    {
                        CourseOutlineMilestone comModel = new CourseOutlineMilestone();
                        comModel.courseOutlineId = model.id;
                        comModel.courseId        = request.courseId;
                        comModel.name            = request.CourseOutlineMilestone[comKey].name;
                        comModel.lessonCompleted = request.CourseOutlineMilestone[comKey].lessonCompleted;

                        if (request.CourseOutlineMilestoneResourceFile != null)
                        {
                            if (request.CourseOutlineMilestoneResourceFile[comKey].Length > 0)
                            {
                                Stream stream = request.CourseOutlineMilestoneResourceFile[comKey].OpenReadStream();

                                var    path = Path.Combine(_hostingEnvironment.WebRootPath, _fileDirectory.virtualDirectory);
                                string courseOutlineMilestoneVideoFolder = String.Format("{0}\\Content\\Video\\CourseOutlineMilestone", path);

                                if (!Directory.Exists(courseOutlineMilestoneVideoFolder))
                                {
                                    Directory.CreateDirectory(courseOutlineMilestoneVideoFolder);
                                }

                                var milestoneId = Guid.NewGuid();

                                var extension         = Path.GetExtension(request.CourseOutlineMilestoneResourceFile[comKey].FileName);
                                var milestoneFileName = milestoneId.ToString() + extension.ToString().ToLower();


                                using (var zipStream = new FileStream(Path.Combine(courseOutlineMilestoneVideoFolder, milestoneFileName), FileMode.Create))
                                {
                                    request.CourseOutlineMilestoneResourceFile[comKey].CopyTo(zipStream);
                                }
                                comModel.resourceFile = milestoneFileName;
                            }
                        }

                        _context.CourseOutlineMilestone.Add(comModel);
                        await _context.SaveChangesAsync();
                    }
                }

                // start: Course Outline Media
                if (request.CourseOutlineMediaFile != null)
                {
                    for (int cofKey = 0; request.CourseOutlineMediaFile.Count() > cofKey; cofKey++)
                    {
                        CourseOutlineMedia cofModel = new CourseOutlineMedia();
                        cofModel.courseOutlineId = model.id;
                        cofModel.courseId        = request.courseId;


                        if (request.CourseOutlineMediaFile[cofKey].Length > 0)
                        {
                            Stream stream = request.CourseOutlineMediaFile[cofKey].OpenReadStream();

                            var    path = Path.Combine(_hostingEnvironment.WebRootPath, _fileDirectory.virtualDirectory);
                            string courseOutlineMediaFolder = String.Format("{0}\\Content\\Video\\CourseOutlineMedia", path);

                            if (!Directory.Exists(courseOutlineMediaFolder))
                            {
                                Directory.CreateDirectory(courseOutlineMediaFolder);
                            }

                            var mediaId = Guid.NewGuid();

                            var extension     = Path.GetExtension(request.CourseOutlineMediaFile[cofKey].FileName);
                            var mediaFileName = mediaId.ToString() + extension.ToString().ToLower();


                            using (var zipStream = new FileStream(Path.Combine(courseOutlineMediaFolder, mediaFileName), FileMode.Create))
                            {
                                request.CourseOutlineMediaFile[cofKey].CopyTo(zipStream);
                            }
                            cofModel.resourceFile = mediaFileName;
                        }

                        _context.CourseOutlineMedia.Add(cofModel);
                        await _context.SaveChangesAsync();
                    }
                }

                return(Ok(new GenericResult {
                    Response = true, Message = request.title + " has been successfully created"
                }));
            }
            catch (Exception e)
            {
                return(BadRequest(e));
            }
        }