public OrganizationInfoViewModel GetOrganizationInfo(Guid organizationId)
        {
            var organization = _applicationDbContext.Organizations.Include("OrganizationRatings").SingleOrDefault(p => p.Id == organizationId);

            if (organization == null)
            {
                throw new Exception($"Организации с таким id {organizationId} не существует");
            }

            var organizationFiles = _applicationDbContext.OrganizationFiles.Where(p => p.OrganizationId == organizationId).ToList();
            var averageScore      = organization.OrganizationRatings.Average(p => p.Score);

            OrganizationInfoViewModel model = new OrganizationInfoViewModel()
            {
                OrganizationId       = organization.Id.ToString(),
                FullName             = organization.FullName,
                IdentificationNumber = organization.IdentificationNumber,
                OrganizationType     = organization.OrganizationType.Name,
                OrganizationRating   = averageScore,
                Address           = organization.Address,
                Email             = organization.Email,
                Contacts          = organization.Contacts,
                Site              = organization.Site,
                OrganizationFiles = organizationFiles
            };

            return(model);
        }
        public void EditOrganizationInfo(OrganizationInfoViewModel model)
        {
            var organization = _applicationDbContext.Organizations.SingleOrDefault(p => p.Id.ToString() == model.OrganizationId);

            if (organization == null)
            {
                throw new Exception($"Организации с id {model.OrganizationId} в базе нет");
            }

            var organizationType = _applicationDbContext.OrganizationTypes
                                   .SingleOrDefault(p => p.Name == model.OrganizationType);

            if (organizationType == null)
            {
                OrganizationType orgType = new OrganizationType()
                {
                    Id   = Guid.NewGuid(),
                    Name = model.OrganizationType
                };
                _applicationDbContext.OrganizationTypes.Add(orgType);
                _applicationDbContext.SaveChanges();
                organizationType = orgType;
            }

            organization.FullName             = model.FullName;
            organization.IdentificationNumber = model.IdentificationNumber;
            organization.OrganizationTypeId   = organizationType.Id;
            organization.Address  = model.Address;
            organization.Email    = model.Email;
            organization.Contacts = model.Contacts;
            organization.Site     = model.Site;
            _applicationDbContext.SaveChanges();

            if (model.UploadedFiles.Count != 0)
            {
                foreach (HttpPostedFileBase i in model.UploadedFiles)
                {
                    OrganizationFile file     = new OrganizationFile();
                    byte[]           fileData = null;

                    using (var binaryReader = new BinaryReader(i.InputStream))
                    {
                        fileData = binaryReader.ReadBytes(i.ContentLength);
                    }

                    file.OrganizationId = organization.Id;
                    file.FileName       = i.FileName;
                    file.Extension      = i.ContentType;
                    file.Content        = fileData;
                    file.CreatedAt      = DateTime.Now;
                    _applicationDbContext.OrganizationFiles.Add(file);
                    _applicationDbContext.SaveChanges();
                }
            }
        }
        public void OrganizationManagementService_EditOrganizationInfo()
        {
            ApplicationDbContext applicationDb = new ApplicationDbContext();

            applicationDb.Database.CreateIfNotExists();

            OrganizationType organizationType = new OrganizationType()
            {
                Id   = Guid.NewGuid(),
                Name = "TestType_04"
            };

            applicationDb.OrganizationTypes.Add(organizationType);
            applicationDb.SaveChanges();

            Organization organization = new Organization()
            {
                Id                 = Guid.NewGuid(),
                FullName           = "TestCompany_04",
                RegistrationDate   = DateTime.Now,
                OrganizationTypeId = organizationType.Id
            };

            applicationDb.Organizations.Add(organization);
            applicationDb.SaveChanges();

            List <HttpPostedFileBase> files = new List <HttpPostedFileBase>();
            OrganizationInfoViewModel model = new OrganizationInfoViewModel()
            {
                OrganizationId       = organization.Id.ToString(),
                FullName             = "TestCompany_04",
                IdentificationNumber = organization.IdentificationNumber,
                Address          = organization.Address,
                Email            = "*****@*****.**",
                Contacts         = organization.Contacts,
                Site             = organization.Site,
                OrganizationType = "AnotherTestType_04",
                UploadedFiles    = files
            };

            OrganizationManagementService sut = new OrganizationManagementService();

            sut.EditOrganizationInfo(model);

            Organization org = applicationDb.Organizations.SingleOrDefault(p => p.Id == organization.Id);

            Assert.IsNotNull(org);
            //Assert.IsTrue(org.FullName == "TestCompany_04" && org.Email == "*****@*****.**");
        }