예제 #1
0
        private async Task <Dal.Model.MediaHeader> AddOrUpdateHeaderAsync(Common.Api.Request.MediaHeader requestedHeader, Dal.Model.User loggedUser)
        {
            Dal.Model.MediaHeader header = requestedHeader.MediaHeaderId == null ? new Dal.Model.MediaHeader() :
                                           await context.MediaHeaders.SingleOrDefaultAsync(h => h.MediaHeaderId == (int)requestedHeader.MediaHeaderId);

            // Change all values except PK (MediaHeaderId)
            header.Name          = requestedHeader.Name;
            header.Year          = requestedHeader.Year;
            header.Description   = requestedHeader.Description;
            header.ReferenceLink = !string.IsNullOrWhiteSpace(requestedHeader.ReferenceLink) ? new Uri(requestedHeader.ReferenceLink) : null;
            header.UserId        = loggedUser.UserId;

            if (requestedHeader.MediaHeaderId == null)
            {
                await context.MediaHeaders.AddAsync(header);
            }
            await context.SaveChangesAsync();                       // Save to get MediaId.

            requestedHeader.MediaHeaderId = header.MediaHeaderId;   // Populate id in request structure, so it can be used later if needed.

            // Header tags
            await AddHeaderTagsAsync(requestedHeader);

            // Parts
            await AddPartsAsync(requestedHeader, header, loggedUser);

            return(header);
        }
예제 #2
0
 public static void MapResponseMedia(this Dal.Model.MediaHeader media, ref Common.Api.Response.MediaHeader responseHeader)
 {
     responseHeader.MediaHeaderId = media.MediaHeaderId;
     responseHeader.Name          = media.Name;
     responseHeader.Year          = media.Year;
     responseHeader.Description   = media.Description;
     responseHeader.ReferenceLink = media.ReferenceLink != null ? media.ReferenceLink.AbsoluteUri : string.Empty;
     responseHeader.User          = media.User.MapReponseUser();
 }
예제 #3
0
        private async Task AddPartsAsync(Common.Api.Request.MediaHeader requestedHeader,
                                         Dal.Model.MediaHeader addedHeader, Dal.Model.User loggedUser)
        {
            if (requestedHeader.Parts != null)
            {
                foreach (var requestedPart in requestedHeader.Parts)
                {
                    Dal.Model.MediaPart part = requestedPart.MediaPartId == null ? new Dal.Model.MediaPart() :
                                               await context.MediaParts.SingleOrDefaultAsync(p => p.MediaPartId == requestedPart.MediaPartId);

                    part.MediaHeaderId = addedHeader.MediaHeaderId;
                    part.Season        = requestedPart.Season;
                    part.Episode       = requestedPart.Episode;
                    part.Name          = requestedPart.Name;
                    part.Description   = requestedPart.Description;
                    part.ReferenceLink = !string.IsNullOrWhiteSpace(requestedPart.ReferenceLink) ? new Uri(requestedPart.ReferenceLink) : null;
                    part.UserId        = loggedUser.UserId;
                    part.Created       = DateTime.Now;

                    if (requestedPart.MediaPartId == null)
                    {
                        await context.MediaParts.AddAsync(part);
                    }

                    await context.SaveChangesAsync();

                    requestedPart.MediaPartId = part.MediaPartId;

                    // Part tags
                    await AddPartTagsAsync(requestedPart);

                    // Media versions and tags
                    await AddVersionAsync(requestedPart, part, loggedUser);
                }
            }
        }