Пример #1
0
        // POST api/dataLists
        public IHttpActionResult Post([FromBody] DataListDTO dataListDTO)
        {
            var dataList = Mapper.Map <DataList>(dataListDTO);

            ModelState.Clear();
            Validate(dataList);

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (CurrentUser is SuperUser)
            {
                dataList.OrganisationId = Guid.Parse(dataListDTO.Organisation.Id);
                dataList.Organisation   = null;
            }
            else
            {
                dataList.OrganisationId = CurrentOrganisationId.Value;
                dataList.Organisation   = null;
            }

            var order = 1;

            foreach (var item in dataList.AllItems)
            {
                item.Order = order++;
            }

            try
            {
                UnitOfWork.DataListsRepository.InsertOrUpdate(dataList);
                UnitOfWork.Save();

                MemoryCacher.DeleteStartingWith(CACHE_KEY);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Пример #2
0
        // PUT api/dataLists/{id}
        public IHttpActionResult Put(Guid id, [FromBody] DataListDTO dataListDTO)
        {
            if (id == Guid.Empty)
            {
                return(BadRequest("id is empty"));
            }

            var dataList = Mapper.Map <DataList>(dataListDTO);

            ModelState.Clear();
            Validate(dataList);

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var dbDataList = UnitOfWork.DataListsRepository.Find(id);

            dbDataList.Name = dataList.Name;
            UnitOfWork.DataListsRepository.InsertOrUpdate(dbDataList);

            var order = 1;

            foreach (var val in dataListDTO.Items)
            {
                var dbItem = UnitOfWork.DataListItemsRepository.Find(val.Id);
                if (dbItem == null)
                {
                    dbItem = new DataListItem();
                }

                if (val.IsDeleted)
                {
                    UnitOfWork.DataListItemsRepository.Delete(dbItem);
                }
                else
                {
                    Mapper.Map(val, dbItem);

                    if (dbItem.Attributes != null)
                    {
                        var attributes = dbItem.Attributes.ToList();
                        foreach (var attr in attributes)
                        {
                            attr.OwnerId = dbItem.Id;
                            Mapper.Map(val.Attributes.SingleOrDefault(a => a.Id == attr.Id), attr);
                        }
                    }

                    if (val.Attributes != null)
                    {
                        var newAttributes = val.Attributes.Where(attr => attr.Id == Guid.Empty && attr.ValueId != Guid.Empty).ToList();
                        foreach (var attr in newAttributes)
                        {
                            var newAttr = Mapper.Map <DataListItemAttr>(attr);
                            newAttr.OwnerId = dbItem.Id;
                            dbItem.Attributes.Add(newAttr);
                        }
                    }

                    dbItem.DataListId = id;
                    dbItem.Order      = order++;
                    UnitOfWork.DataListItemsRepository.InsertOrUpdate(dbItem);
                }
            }

            try
            {
                UnitOfWork.Save();
                MemoryCacher.DeleteStartingWith(CACHE_KEY);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }