public async Task <IHttpActionResult> Post(AddressBookEntryViewModel addressBookEntry)
        {
            if (addressBookEntry == null)
            {
                return(BadRequest());
            }

            using (var context = new ConnectContext())
            {
                var userId          = User.Identity.GetUserId <int>();
                var isAdministrator = User.IsInRole(ConnectRoles.Admin);

                var entry = await context.CustomerContacts.FirstOrDefaultAsync(c => c.Id == addressBookEntry.Id && (userId == c.UserId || isAdministrator));

                if (entry != null)
                {
                    entry.Email          = addressBookEntry.Email;
                    entry.SecondaryEmail = addressBookEntry.SecondaryEmail;

                    await context.SaveChangesAsync();

                    return(Ok());
                }
            }

            return(NotFound());
        }
Example #2
0
        private static async Task <MobileApplicationUser> IsUserAuthorized <T>(MobileAppRequestViewModel <T> message)
        {
            if (string.IsNullOrEmpty(message?.Username) || string.IsNullOrEmpty(message.Thumbprint))
            {
                return(null);
            }

            using (var context = new ConnectContext())
            {
                var user = await context.MobileApplicationUsers.FirstOrDefaultAsync(u => u.Username == message.Username && u.Thumbprint == message.Thumbprint);

                if (user != null)
                {
                    user.EmailAddress = message.EmailAddress;
                    return(user.IsAuthorized ? user : null);
                }

                user = context.MobileApplicationUsers.Add(new MobileApplicationUser
                {
                    Username     = message.Username,
                    Thumbprint   = message.Thumbprint,
                    EmailAddress = message.EmailAddress,
                    IsAuthorized = true
                });
                await context.SaveChangesAsync();

                return(user);
            }
        }
Example #3
0
        public async Task <IHttpActionResult> AddClient([FromBody] ClientViewModel data)
        {
            if (data == null || string.IsNullOrEmpty(data.Name))
            {
                throw new ArgumentNullException(nameof(data));
            }

            using (var context = new ConnectContext())
            {
                if (context.Clients.Any(c => c.Name == data.Name))
                {
                    return(BadRequest("A client already exists with that name."));
                }

                var client = new Client
                {
                    Name     = data.Name,
                    Created  = DateTime.Now,
                    AccessId = Guid.NewGuid(),
                    Licenses = new List <License>()
                };

                context.Clients.Add(client);
                await context.SaveChangesAsync();

                return(Ok(client));
            }
        }
Example #4
0
        public async Task <IHttpActionResult> AddLicense([FromBody] LicenseViewModel data)
        {
            using (var context = new ConnectContext())
            {
                var client = await context.Clients.Include(x => x.Licenses).FirstOrDefaultAsync(c => c.AccessId == data.AccessId);

                if (client != null)
                {
                    var license = new License
                    {
                        Created    = DateTime.Now,
                        Expiration = data.Expiration,
                        Key        = data.Expiration.Ticks.ToString(CultureInfo.InvariantCulture).TrimEnd(char.Parse("0")),
                        AccessId   = Guid.NewGuid()
                    };

                    client.Licenses.Add(license);

                    await context.SaveChangesAsync();

                    return(Ok(new LicenseViewModel(license)));
                }

                return(BadRequest("Could not find client"));
            }
        }
Example #5
0
        public async Task <IHttpActionResult> Post(int userId)
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            using (var context = new ConnectContext())
            {
                var statusReportMap = await context.StatusReportMaps.FirstOrDefaultAsync(c => c.UserId == userId);

                if (statusReportMap == null)
                {
                    statusReportMap = new StatusReportMap
                    {
                        UserId = userId,
                        MapId  = Guid.NewGuid()
                    };
                    context.StatusReportMaps.Add(statusReportMap);
                    await context.SaveChangesAsync();
                }

                var root     = HttpContext.Current.Server.MapPath("~/StatusReportData");
                var provider = new MultipartFormDataStreamProvider(root);

                try
                {
                    await Request.Content.ReadAsMultipartAsync(provider);

                    foreach (var file in provider.FileData)
                    {
                        var finalDestination = HttpContext.Current.Server.MapPath("~/StatusReportData/" + statusReportMap.MapId.ToString().Replace("-", "") + "/" + DateTime.Now.Date.ToString("ddMMMyyyy"));
                        if (!Directory.Exists(finalDestination))
                        {
                            Directory.CreateDirectory(finalDestination);
                        }

                        var fileName = file.Headers.ContentDisposition.FileName.Replace("\"", string.Empty);
                        var data     = File.ReadAllBytes(file.LocalFileName);

                        File.WriteAllBytes(Path.Combine(finalDestination, fileName), data);
                    }
                    return(Ok());
                }
                catch (Exception ex)
                {
                    return(InternalServerError(ex));
                }
            }
        }
Example #6
0
        public async Task <IHttpActionResult> Delete([FromBody] DeleteDetailedExceptionViewModel data)
        {
            using (var context = new ConnectContext())
            {
                var exception = context.DetailedExceptions.FirstOrDefault(u => u.Id == data.Id);
                if (exception != null)
                {
                    exception.Deleted = DateTime.Now;
                    await context.SaveChangesAsync();

                    return(Ok());
                }
            }

            return(NotFound());
        }
Example #7
0
        public async Task <IHttpActionResult> DeleteClient([FromBody] DeleteLicenseViewModel data)
        {
            using (var context = new ConnectContext())
            {
                var client = await context.Clients.FirstOrDefaultAsync(c => c.AccessId == data.ClientAccessId);

                if (client != null)
                {
                    client.Deleted = DateTime.Now;
                    await context.SaveChangesAsync();

                    return(Ok());
                }
                return(NotFound());
            }
        }
Example #8
0
        public async Task <IHttpActionResult> PostQcReport()
        {
            var message = HttpContext.Current.Request.Form.MapToQcReport();
            var mobileApplicationUser = await IsUserAuthorized(message);

            if (mobileApplicationUser == null)
            {
                return(Unauthorized());
            }
            if (message.Username == "LeeTest")
            {
                return(Ok());
            }
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            message.Data.User = mobileApplicationUser;
            message.Data.MobileDocumentType = ReportType.QCReport;
            message.Data.Created            = DateTime.Now;

            QCReport entity;

            using (var context = new ConnectContext())
            {
                entity = context.QCReports.Add(message.Data);
                await context.SaveChangesAsync();
            }

            var serializedData = new SerializedData
            {
                DocumentId   = entity.Id,
                Data         = await ExtractSerializedData(),
                DocumentType = typeof(QCReport).FullName
            };

            using (var context = new ConnectContext())
            {
                context.Set <SerializedData>().Add(serializedData);
                await context.SaveChangesAsync();
            }

            return(Ok());
        }
        public async Task <IHttpActionResult> Post()
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            var root     = HttpContext.Current.Server.MapPath("~/App_Data/uploads");
            var provider = new MultipartFormDataStreamProvider(root);

            try
            {
                // Read the form data.
                await Request.Content.ReadAsMultipartAsync(provider);

                // This illustrates how to get the file names.
                foreach (var file in provider.FileData)
                {
                    var directFileUpload = new DirectUploadDocument
                    {
                        FileName       = file.Headers.ContentDisposition.FileName.Replace("\"", string.Empty),
                        SerializedData = File.ReadAllBytes(file.LocalFileName),
                        Uploaded       = DateTime.Now,
                        UserId         = User.Identity.GetUserId <int>()
                    };

                    using (var context = new ConnectContext())
                    {
                        context.DirectUploadDocuments.Add(directFileUpload);
                        await context.SaveChangesAsync();
                    }
                }
                return(Ok());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
        public async Task <IHttpActionResult> Post(ManageAccessSiteViewModel selectedSite)
        {
            if (selectedSite == null)
            {
                return(BadRequest());
            }

            using (var context = new ConnectContext())
            {
                var site = await context.UserNodes.FirstOrDefaultAsync(c => c.CompanyKey + "-" + c.MachineKey + "-" + c.LicenseKey == selectedSite.Description);

                if (site != null)
                {
                    site.IsAuthorized = !site.IsAuthorized;
                    await context.SaveChangesAsync();

                    return(Ok());
                }
            }

            return(NotFound());
        }